0829-0607归档
NSKeyedArchever保存数据到Documents中 实际开发中会使用SQLite3 推荐的方式 因为数据量大 SQLite3性能好
这里 我们使用的是:
登录界面使用NSUserDefaults
联系人界面使用 NSkeyedArchiver
----------------------
UITabBarController
使用步骤
1、将控制器的视图交给self.window.rootViewController = tbVc (view高度480 并有子控制器tabBar 高度49)
2、tbVc addChildViewController:vc1(UIViewController) 或者tbVc.viewControllers = @[vc1,vc2]
运行程序点击navigationBar上item的时候 是执行的push操作
UITabBarController *tb1 = [[UITabBarController alloc] init];
self.window.rootViewController =tb1; 将tabBarController的.view交给 self.window.view
// tb1.view{{0, 0}, {320, 480}}
// tb1.view addSubview:子控制器的view {{0, 0}, {320, 480}} ios6里面的高度是431
// tb1.view addSubview:tb1.tabBar {{0, 431}, {320, 49}}
tabBarController添加自控制器的时候 会将第一个子自控制器最先显示 其他自控制器在点击下面的tabBar上的某个item的时候显示
tb1.viewControllers = @[vc1,vc2] //vc1=UIViewController vc1.tabBarItem.title = @"联系人" vc1默认有tabBarItem
vc1.tabBarController.tabBar
tb1.tabBar.items tb1.tabBar.subviews
UITabBarItem 属性包括 title image selectedImage badgeValue (如10)
appDelegate.m里
self.window makeKeyAndVisible 是成为application的主窗口 application.keyWindow
- (void)applicationDidBecomeActive:(UIApplication *)application
里面 开始创建主窗口
// HMAppDelegate.m // UITabBarController-空项目 #import "HMAppDelegate.h" @implementation HMAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; UITabBarController *tab = [[UITabBarController alloc] init]; self.window.rootViewController = tab; UIViewController *vc1 = [[UIViewController alloc] init]; vc1.view.backgroundColor = [UIColor redColor]; vc1.tabBarItem.title = @"消息"; vc1.tabBarItem.image = [UIImage imageNamed:@"tab_recent_nor"]; // [tab addChildViewController:vc1]; UIViewController *vc2 = [[UIViewController alloc] init]; vc2.view.backgroundColor = [UIColor redColor]; vc2.tabBarItem.title = @"联系人"; vc2.tabBarItem.image = [UIImage imageNamed:@"tab_buddy_nor"]; vc2.view.backgroundColor = [UIColor greenColor]; // [tab addChildViewController:vc2]; UIViewController *vc3 = [[UIViewController alloc] init]; vc3.view.backgroundColor = [UIColor redColor]; vc3.tabBarItem.title = @"动态"; vc3.tabBarItem.image = [UIImage imageNamed:@"tab_qworld_nor"]; vc3.view.backgroundColor = [UIColor blueColor]; // [tab addChildViewController:vc3]; tab.viewControllers = @[vc1,vc2,vc3]; [self.window makeKeyAndVisible]; return YES; }
-----------------
UITabBarController的拖storyboard
1、拖UITabBarController 删除2个UIViewController控件
2、自己拖一个UIViewController控件vc1
3、右键UITabBarController 看到view controllers 拖到vc1上面
--------
应用程序进入后台休眠 不接收事件
Command +Shift + 2此点击H 程序进入后台后
应用程序里面的所有时间都不接收 这是后向上推把程序关闭也不会调用下面的方法
音乐播放器后面会讲到进入后台不要进入休眠状态
---------------
QQ框架界面搭建(主流)
现有TabBarController 后有navigationController
有了这个可以自己搭建很多种框架了
1、storyboard搭建界面 先删除viewController控件 自己拖一个TabBarController(属性设置为启动控制器init view controller) 删除TabBarController指向的2个ViewController
2、拖几个NavigationController
3、右键TabBarController 找到viewControllers 连线几个NavigationController 这时候所有的navigatinController下面会显示他的navigationItem 设置每个navigationItem的值
为联系人、消息、
4、设置每个navigationController控件push的 UIViewController 头部的navigationBar 左边右边各加一个 UIBarButtonItem
5、设置其中一个UITableViewController的静态单元格 先分组模式 然后设置3组 每一组的cell ctrl + c ctrl +v 设置几行
拖动第一个cell把这个cell拉高一点
第某个cell设置style为right detail , 然后设置 lines为0 (multi lines =0 表示换行),修改里面的文字 再拉高cell
6、新建一个tableViewController tv111,选择某个cell push到tv111 tv111的头部-tablewHeaerView放一个UIView 里面拖一个UIImageView 和一个 UILabel
tv111设置 勾选Hide Bottom Bar On Push
7、代码创建控制器 storyboard中的控制器与其对应 这里新创建的FFAddTableViewController 默认创建的时候 -numberofrowsInSection** -numberOf*** 都是 return 0
而stroyboard里的 tableViewController是静态单元格 所以需要删除这2个方法
先有UITabBarController tb.viewControllers = 几个导航控制器 (导航控制器继承UIViewController和其实平级的 只是在push的时候会共享一个navigationbar)
vc1.navigationItem setLeftBarButtonItems设置左边的一些barButtonItem
vc1.navigationItem setLeftBarButtonItem设置左边的barButtomItem
------------
QQ框架界面搭建(非主流 )
有缺陷 所以一般不适用这种搭建结构
现有UINavigationController 后有 UITabBarController
1、清空stroyboard中原有的控制器 拖一个UINavigationController
2、UINavigationController原有的UIViewController 拖一个UITabBarConroller tbVc1
3、右击UINavigationController设置 rootViewController 为tbVc1
4、设置tbVc1的自控制器控件的属性item字体 iamgeView selectedImageView badgedNumber
-----------
其他:
[view1 isKindOfclass:[UIImageView class]] 判断是否是UIImageView
[view1 isMemberOfclass:[UIImageView class]] 判断是否是UIImageView或者UIImageView的子类
self.parentViewController