第02天实战技术(14):父子控制器(完善)
2017-03-26 00:00
260 查看
#####一、父子控制器(完善)<采用方式:使用懒加载>
1.控制器
code
解决上一次的三个问题 1.控制器每次都需要创建 2.控制器的view每次都添加上去 3.控制器不能处理业务逻辑,控制器被销毁 采用方式:使用懒加载 但是 自始自终 都没有使用过父子控制器去实现
1.控制器
不能处理业务逻辑,控制器
被销毁(因为控制器
没有强引用,所以才会被销毁,
view因为
父控制器的view添``加到
一个数组
里面有强引用
,所以view不会销毁`)
code
#import "ViewController.h" #import "SocietyViewController.h" // 社会 #import "TopLineViewController.h" // 头条 #import "HotViewController.h" // 焦点 /* 父子控制器 : 多控制器管理, 导航控制器,UITabBarController 默认UITabBarController , 实现这种效果,父子实战 */ @interface ViewController () // 定义属性 这样控制器就会有强引用了 // @property(nonatomic) 默认是strong @property(nonatomic) SocietyViewController *sVC; @property(nonatomic) TopLineViewController *tlVC; @property(nonatomic) HotViewController *hVC; @end @implementation ViewController /* 存在的问题: 1.控制器每次都需要创建 2.控制器的view每次都添加上去 3.控制器不能处理业务逻辑,控制器被销毁 自始自终 都没有使用过父子控制器去实现 */ - (void)viewDidLoad { [super viewDidLoad]; } - (IBAction)clickSociety:(UIButton *)sender { // view 和 viewController // 为什么view在,viewController不在 // 只要没有强引用 就会被销毁 // 把社会的控制器的view 添加进去 // 懒加载 只创建1遍 if (_sVC == nil) { SocietyViewController *sVC = [[SocietyViewController alloc]init]; sVC.view.backgroundColor = [sender backgroundColor]; sVC.view.frame = CGRectMake(0, 64, self.view.bounds.size.width, self.view.bounds.size.height-64); // 设置frame是为了:防止控制器的view 挡住头部内容 _sVC = sVC; // 赋值给全局变量 } // 每次都要添加到上面 // addSubview 把一个view加上去,先判断这个view有没有父控件 // 如果有, 会拿到这个view,先从父控件移除,再添加 [self.view addSubview:_sVC.view]; } - (IBAction)clickTopLine:(UIButton *)sender { if (_tlVC == nil) { TopLineViewController *tlVC = [[TopLineViewController alloc]init]; tlVC.view.backgroundColor = [sender backgroundColor]; tlVC.view.frame = CGRectMake(0, 64, self.view.bounds.size.width, self.view.bounds.size.height-64); _tlVC = tlVC; // 赋值给全局变量 } [self.view addSubview:_tlVC.view]; } - (IBAction)clickHot:(UIButton *)sender { if (_hVC == nil) { HotViewController *hVC = [[HotViewController alloc]init]; hVC.view.backgroundColor = [sender backgroundColor]; hVC.view.frame = CGRectMake(0, 64, self.view.bounds.size.width, self.view.bounds.size.height-64); _hVC = hVC; // 赋值给全局变量 } [self.view addSubview:_hVC.view]; } @end
相关文章推荐
- 第02天实战技术(13):父子控制器(简介)
- 第02天实战技术(17):父子控制器(实现)
- 第02天实战技术(16):父子控制器的重要性(modal)
- 第02天实战技术(15):父子控制器的重要性(push)
- 第01天实战技术(14):自动生成属性代码
- 第03天实战技术(14):枚举中的位运算
- 第02天实战技术(12):extern和const联合使用
- 第02天实战技术(06):项目恶心Bug
- 第02天实战技术(11):static和const联合使用
- 第04天实战技术(14):UICollectionView自定义布局方法
- 第02天实战技术(05):super,superClass,class
- 第02天实战技术(10):static和extern使用
- 第02天实战技术(04):runtime字典转模型
- 第02天实战技术(09):开发中const使用场景
- 第02天实战技术(03):Runtime(字典转模型,一级转换)
- 第02天实战技术(08):const简单使用
- 第02天实战技术(02):KVC字典转模型
- 第02天实战技术(07):const与宏的区别
- 项目实战No7 标签按钮 父子控制器
- 第02天实战技术(01):runtime回顾