zoukankan      html  css  js  c++  java
  • iOS-控制器的管理

    如果2个控制器的view是⽗父⼦子关系,那么这2个控制器也应该为⽗父⼦子关系
    [vc01.view addSubview: vc02.view];
    [vc01 addChildViewController: vc02];
    // 会将vc02添加到vc01.childViewControllers数组中
    // vc01.childViewControllers --> @[vc02]
    
    1> 通过addChildViewController⽅方法,将有可能显⽰示的⼩小控制器变为⼤大控制器的⼦子控制器
    [self addChildViewController:[[HMOneViewController alloc] init]];
    [self addChildViewController:[[HMTwoViewController alloc] init]];
    [self addChildViewController:[[HMThreeViewController alloc] init]];
    2> 在⼤大控制器中声明⼀一个属性,⽤用来记录当前正在显⽰示的⼦子控制器
    @property (nonatomic, weak) UIViewController *showingChildVc;
    3> 需要提供⼀一个⽅方法,来切换⼦子控制器
    // index : 即将需要显⽰示的⼦子控制器的索引
    - (void)switchVc:(int)index
    {
        // 1.移除当前正在显⽰示的⼦子控制器view
        [self.showingChildVc.view removeFromSuperview];
        // 2.添加index位置对应控制器的view
        UIViewController *newVc = self.childViewControllers[index];
        newVc.view.frame = CGRectMake(0, 44,     self.view.frame.size.width,
        self.view.frame.size.height - 44);
        [self.view addSubview:newVc.view];
        self.showingChildVc = newVc;
    }
    
    
    不建立父子控制其可能的后果
    内部的⼩小控制器可能会发⽣生以下情况:
    
    1> ⽆法察觉到⽐较重大的系统事件发⽣生了(比如屏幕旋转事件)
    2> 可能会导致self.navigationController == nil、self.tabBarController == nil
    3> 可能会导致[self dismissViewControllerAnimated:YES completion:nil]⽆效(无法关闭控制器)    
  • 相关阅读:
    js兼容性问题总结
    style设置/获取样式的问题 和 offsetWidth/offsetHeight的问题
    常用SQL总结
    完美运动框架,兼容性好,可多次调用
    JS—实现拖拽
    java设计模式——享元模式
    java设计模式——适配器模式
    java设计模式——装饰者模式
    java设计模式——外观模式(门面模式)
    java设计模式——单例模式(三)
  • 原文地址:https://www.cnblogs.com/DarbyCJ/p/4661929.html
Copyright © 2011-2022 走看看