文档章节

第02天实战技术(14):父子控制器(完善)

宇鸿165
 宇鸿165
发布于 2017/03/26 21:58
字数 544
阅读 4
收藏 0

#####一、父子控制器(完善)<采用方式:使用懒加载>

解决上一次的三个问题
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

© 著作权归作者所有

宇鸿165
粉丝 1
博文 919
码字总数 368963
作品 0
广州
私信 提问
实战进阶学习Unity3d游戏开发-何韬-专题视频课程

实战进阶学习Unity3d游戏开发—35727人已学习 课程介绍 零起步,快进阶,基础+算法融汇到项目实战中,细节+核心直到上线,一步步引领菜鸟做出大虾级的开发。 课程收益 菜鸟进来,高手出去,自...

pkutao
2015/01/11
0
0
我的第三本书>

关于本书 作者前两本书《软件性能测试与LoadRunner实战》和《精通软件性能测试与LoadRunner实战》面市后,受到广大软件测试和开发人员的关注与好评,然而,在前两本书中讲述的性能测试工具以...

fish_yy
2013/05/28
0
0
JavaScript 30天每日效果图

JavaScript 30天每日效果图 在Github上看到了wesbos的一个Javascript30天挑战的repo,旨在使用纯JS来进行练习,不允许使用任何其他的库和框架,该挑战共30天,我会在这里复现这30天遇到的挑战...

黎跃春
2017/07/19
0
0
【目录】我的原创技术视频教程

大家好,这里为大家提供的是我的原创视频教程,内容以计算机安全为主,视频内容为不定期更新,希望大家喜欢 【吾爱动画大赛2016参赛作品】- JS下载者脚本木马的分析与防御 简介:本视频是我参...

ioio_jy
2016/11/03
0
0
开源力量公开课第二十四期-为何Hadoop是分布式大数据处理的未来&如何掌握Hadoop?

详情:http://www.osforce.cn/?p=1216 课程题目:开源力量公开课第二十四期-为何Hadoop是分布式大数据处理的未来&如何掌握Hadoop? 开课时间:2013年07月30日 18:30 - 21:30 现场或线上参课:...

程开源
2013/07/19
5
0

没有更多内容

加载失败,请刷新页面

加载更多

《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
4
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
6
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
4
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
996
11
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部