使用视图控制器包含的缺点



我开发了很多iOS应用,在页面管理等方面构建了相当复杂的用户流程。

在许多情况下,UINavigationController堆栈非常适合遍历可能的页面树,但缺乏我所寻找的许多可定制性。

当需要可定制性时,我最终使用了很多ViewController containment。它看起来像这样:

//ParentViewController.m
@interface ParentViewController ()
@property (nonatomic, strong) ChildViewController *childViewController;
@end
@implemenation ParentViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    self.childViewController = [[ChildViewController alloc]init];
    [self addChildViewController:self.childViewController];
    [self.view addSubview:self.childViewController.view];
    [self.childViewController didMoveToParentViewController:self];
}

当然,这是一个超级简单的例子,它有子类UIViews作为VC的主视图和更多的逻辑要复杂得多,但我倾向于在不同的VC中嵌套5或10次。

所以我的问题是:在做VC遏制方面,在内存和实用性方面有任何缺点吗(当然,除了手动处理堆栈的额外工作,例如"返回"按钮)?

我认为复杂性和可维护性是视图控制器包含的主要缺点。使用视图控制器包含有许多微妙之处需要正确处理,否则事情可能会以奇怪的方式中断。

有关正确实现视图控制器包含的更多技术帮助,请参见:https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html#//apple_ref/doc/uid/TP40007457-CH11-SW1

…特别是一定要阅读标题为为你的内容添加子视图控制器

最新更新