我开发了很多iOS应用程序,并在页面管理等方面构建了相当复杂的用户流程。
在许多情况下,UINavigationController堆栈非常适合于推送可能页面的树,但缺乏我所期望的许多可定制性。
当需要这种可定制性时,我最终使用了大量的ViewController容器。它看起来像这样:
//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容器时,在内存和实用工具方面有什么缺点(当然,除了手动处理堆栈的额外工作之外,比如“后退”按钮)?
发布于 2015-09-16 02:06:02
我会说复杂性和可维护性是视图控制器容纳性的主要缺点。对于视图控制器的包含,您需要正确处理许多微妙之处,否则事情可能会以奇怪的方式中断。
有关正确实现视图控制器容器的更多技术帮助,请参阅:https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html#//apple_ref/doc/uid/TP40007457-CH11-SW1
尤其是...in请务必阅读标题为向内容添加子视图控制器的部分
https://stackoverflow.com/questions/32321778
复制相似问题