zoukankan      html  css  js  c++  java
  • 父子视图控制器

    1.知识点一

    // 通过addChildViewController添加的控制器都会存在于childViewControllers数组中
        [self addChildViewController:[[XMGOneViewController alloc] init]];
        [self addChildViewController:[[XMGTwoViewController alloc] init]];
        [self addChildViewController:[[XMGThreeViewController alloc] init]];
        
        // 将XMGOneViewController从childViewControllers数组中移除
        [self.childViewControllers[0] removeFromParentViewController];

    /**
     如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应该为父子关系
    [a.view addSubview:b.view];
    [a addChildViewController:b];
    或者
    [a.view addSubview:otherView];
    [otherView addSubbiew.b.view];
    [a addChildViewController:b];
     */

    父子控制器好处:当子视图存在于父视图上面时,屏幕旋转等系统信息会传达给父控制器,进而传达给子视图控制器;能在子视图控制器初始化以后保住子视图控制器的命;

    2.父视图控制器视图添加子视图控制器视图时,应该注意:

        XMGOneViewController *one = [[XMGOneViewController alloc] init];
        one.view.frame = CGRectMake(20, 100, 100, 100);
        [self.view addSubview:one.view];
        [self addChildViewController:one];

    有时子视图控制器的显示并不会按照我们想象的来显示,此时需要添加:

    one.view.autoresizingMask = UIViewAutoresizingNone;

    或者

    self.view.autoresizesSubviews=NO;

    3.willMoveToParentViewController 方法(子视图)

    当在父视图控制器中执行:[self addChildViewController:[[XMGOneViewController alloc] init]];

    子视图控制器会自动调用willMoveToParentViewController方法;子视图添加到父视图的时候,才会调用viewDidLoad;

    当在父视图控制器中执行:[self.childViewControllers[0] removeFromParentViewController];

    子视图控制器会自动调用didMoveToParentViewController方法;然后在dealloc;

  • 相关阅读:
    D
    A
    D
    G
    H
    E
    F
    B
    D
    oracle中新建用户和赋予权限
  • 原文地址:https://www.cnblogs.com/jingdizhiwa/p/5383632.html
Copyright © 2011-2022 走看看