标签:
如果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]?效(无法关闭控制器)
标签:
原文地址:http://www.cnblogs.com/DarbyCJ/p/4661929.html