控制器显示细节

初学者一般认为控制器显示都是全屏的 
其实不然 
如果我们想做出很复杂的应用 我们需要在一个控制器里面 可以切换不同的控制器 
在这里 实现了三个控制器的随意点击切换 
这个仅仅是原理 复杂的应用归根到底 就是这样实现的 
我们应该声明 其他控制器为全局变量 
因为如果我们声明的是局部变量嗲用之后会立即销毁 
我们保存不了这个变量  
各个控制器中的代理方法 和数据都没有管理者 点击会崩掉 
所以这里要特别注意
#import "ViewController.h"
#import "QHTestViewController.h"
#import "QHOneViewController.h"
#import "QHTwoViewController.h"
#import "QHThreeViewController.h"


@interface ViewController ()

- (IBAction)vc1;
- (IBAction)vc2;
- (IBAction)vc3;
@property(nonatomic,strong)QHOneViewController *one;
@property(nonatomic,strong)QHTwoViewController *two;
@property(nonatomic,strong)QHThreeViewController *three;
@property(nonatomic,strong)QHTestViewController *test;
@end


@implementation ViewController

- (QHOneViewController *)one
{
    if (_one == nil) {
        self.one = [[QHOneViewController alloc]init];
        self.one.view.frame = CGRectMake(30, 150, 300, 300);
    }
    return _one;
    
}

- (QHTwoViewController *)two
{
    if (_two == nil) {
        self.two = [[QHTwoViewController alloc]init];
        self.two.view.frame = CGRectMake(30, 150, 300, 300);
    }
    return _two;
}

- (QHThreeViewController *)three
{
    if (_three == nil) {
        self.three = [[QHThreeViewController alloc]init];
        self.three.view.frame = CGRectMake(30, 150, 300, 300);
    }
    return _three;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    
    //控制器是局部变量 所以死了
//    QHTestViewController *test = [[QHTestViewController alloc]init];
//    
//    test.view.frame = CGRectMake(100, 100, 200, 300);
//    test.view.backgroundColor = [UIColor redColor];
//    //tableView 添加到了self.view 中所以不会被销毁
//    [self.view addSubview:test.view];
//    self.test =test;

    //如果发现:控制器的view还在,但是view 上面的数据不显示 ,极大可能是因为 控制器被提前销毁了
    //解决方案 :强引用
#warning 但是没有数据
    
}



- (IBAction)vc1 {
    
    [self.two.view removeFromSuperview];
    [self.three.view removeFromSuperview];
    [self.view addSubview:self.one.view];
    
}

- (IBAction)vc2 {
    
    [self.three.view removeFromSuperview];
    [self.one.view removeFromSuperview];
    [self.view addSubview:self.two.view];
    
}

- (IBAction)vc3 {
    
    [self.one.view removeFromSuperview];
    [self.two.view removeFromSuperview];
    
    [self.view addSubview:self.three.view];
    
}




- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值