UITabBarController
跟UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是QQ、微信等应用
UITabBarController的简单使用
UITabBarController的使用步骤
- 初始化UITabBarController
- 设置UIWindow的rootViewController为UITabBarController
- 根据具体情况,通过addChildViewController方法添加对应个数的子控制器
UITabBarController的子控制器
UITabBarController添加控制器的方式有2种
添加单个子控制器
- (void)addChildViewController:(UIViewController *)childController;
设置子控制器数组
@property(nonatomic,copy) NSArray *viewControllers;
UITabBarController的view结构
UITabBar
如果UITabBarController有N个子控制器,那么UITabBar内部就会有N个UITabBarButton作为子控件
如果UITabBarController有4个子控制器,那么UITabBar的结构大致如下图所示
UITabBarButton
UITabBarButton里面显示什么内容,由对应子控制器的tabBarItem属性决定
App主流UI框架结构
[[[UIView alloc]init] sizeToFit];//根据uiview对象中的内容自己适应大小 与x y 无关
UIImageView* imageView = [[UIImageView alloc]init];
imageView.image = [UIImage imageNamed:@"setting_about_pic"];
[imageView sizeToFit];//若没有这句 imageView显示不出来 因为 Imageview没有大小 lable也可使用
[self.view addSubview:imageView];
editor —> size to fot content
静态单元格可以不写数据源方法
Modal
除了push之外,还有另外一种控制器的切换方式,那就是Modal
任何控制器都能通过Modal的形式展示出来
Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止
以Modal的形式展示控制器
- (void)presentViewController:(UIViewController *)viewControllerToPresent
animated: (BOOL)flag
completion:(void (^)(void))completion
关闭当初Modal出来的控制器
- (void)dismissViewControllerAnimated: (BOOL)flag
completion: (void (^)(void))completion;
A控制器Modal到B控制器 presentingViewController代表A控制器 presentedViewController代表B控制器
A跳到B B里执行dismiss 其实是B给A发消息 让A关闭了B
谁负责显示,谁就负责关闭 A弹出来的B,那么A就负责关闭B
在storyboard中 无法关闭B
在storyboard中,点击线 选modal属性
在代码中:
有业务逻辑,用push,否则 用Modal