13.控制器的父子关系
来源:互联网 发布:mac添加农历 编辑:程序博客网 时间:2024/06/11 02:45
1.控制器父子关系的建立原则
- 1.1 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应该为父子关系
[a.view addSubview:b.view];[a addChildViewController:b];// 或者[a.view addSubview:otherView];[otherView addSubbiew.b.view];[a addChildViewController:b];
- 1.2 获得所有的子控制器
//通过该属性获得获得所有的子控制器@property(nonatomic,readonly) NSArray *childViewControllers;
- 1.3 添加一个子控制器
//让OneViewController成为了self的子控制器[self addChildViewController:[[OneViewController alloc] init]];// 通过addChildViewController添加的控制器都会存在于childViewControllers数组中
- 1.4 获得父控制器
//通过该属性获得获得父控制器@property(nonatomic,readonly) UIViewController *parentViewController;
- 1.5 将一个控制器从它的父控制器中移除
// 控制器a从它的父控制器中移除[a removeFromParentViewController];
- 1.6 当需要监听一个控制器添加到某个父控制器(或当一个控制器从父控制器中移除时)时,处理逻辑操作,可以在
- (void)didMoveToParentViewController:(UIViewController *)parent
方法中监听处理。
//1. 当一个控制器从父控制器中移除时。会自动调用控制器的didMoveToParentViewController:方法,并且参数是nil- (void)didMoveToParentViewController:(UIViewController *)parent{[super didMoveToParentViewController:parent];NSLog(@"didMoveToParentViewController - %@", parent);}//2.当子控制器是由系统维护添加的(如storyboard中添加的子控制器)则子控制器已经被添加到父控制器上时就会调用- (void)didMoveToParentViewController:(UIViewController *)parent{[super didMoveToParentViewController:parent];NSLog(@"didMoveToParentViewController - %@", parent);},若子控制器是通过调用`[self addChildViewController:[[OneViewController alloc] init]]`添加到父控制器上时,系统不会自动调用`didMoveToParentViewController`方法,如要调用则要自己显示调用[self.childViewControllers[0] didMoveToParentViewController:self],系统才会调用didMoveToParentViewController方法。
注意
当在AViewController的view上添加BViewController的view时,设置BViewController的view的frame后,发现BViewController的view不显示,可能需要设置BViewController.view.autoresizingMask = UIViewAutoresizingNone;
// 默认情况下,所有控制器view的autoresizingMask属性都包含了UIViewAutoresizingFlexibleWidth和UIViewAutoresizingFlexibleHeight两个值(宽度和高度可伸缩)OneViewController *one = [[OneViewController alloc] init];one.view.frame = CGRectMake(20, 100, 100, 100);one.view.autoresizingMask = UIViewAutoresizingNone;[self.view addSubview:one.view];[self addChildViewController:one];因为默认加载xib时 self.view == 600x600当加载后,view会放大或缩小,设置one.view == 100x100 --> 缩小x增大。
0 0
- 13.控制器的父子关系
- iOS 控制器父子关系的建立原则
- 控制器父子关系的建立原则
- iOS 【两个控制器的view互为父子关系,那么这两个控制器一定也要互为父子关系】
- IOS开发UI基础:控制器父子关系
- 父子控制器的开发准则
- iOS 抽屉效果实现 注意点 及 iOS 控制器间的父子关系 详解
- 猫猫学iOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
- AJ学IOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
- iOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
- 父子控制器
- 父子控制器
- 父子控制器
- 父子控制器
- 父子控制器
- 父子控制器
- 父子控制器
- 继承时候的父子关系
- zookeepr 杂讲
- leetcode152-Maximum Product Subarray(乘积最大子数组)
- Java内存泄露的理解与解决
- 文件IO(节点文件)
- 【动态规划】【数位DP】[Codeforces 55 D]Beautiful numbers
- 13.控制器的父子关系
- Objective-C 14 代码块Block
- oc中的类的声明和实现
- 欢迎使用CSDN-markdown编辑器
- HDU 4418 Time travel 概率 高斯
- Schema on Read vs Schema on Write
- POJ3691 DNA repair 题解&代码
- java 选择排序算法
- oc中类和对象