如果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]⽆效(无法关闭控制器)
本文探讨了如何在iOS应用中管理多个子控制器的显示,包括使用`addChildViewController`方法添加子控制器,使用属性记录当前显示的子控制器,并提供一个方法用于切换子控制器。同时讨论了未建立父子控制器关系可能导致的问题。
4008

被折叠的 条评论
为什么被折叠?



