iOS-控制器的管理

本文探讨了如何在iOS应用中管理多个子控制器的显示,包括使用`addChildViewController`方法添加子控制器,使用属性记录当前显示的子控制器,并提供一个方法用于切换子控制器。同时讨论了未建立父子控制器关系可能导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果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]⽆效(无法关闭控制器)    

 

转载于:https://www.cnblogs.com/DarbyCJ/p/4661929.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值