我开发了很多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的主视图和更多的逻辑,但我倾向于这样做有时甚至嵌套5或10次不同的VC。
所以我的问题是:在进行VC遏制时,内存和实用程序是否存在任何缺点(当然,还有手动处理堆栈的额外工作,例如“后退”按钮)?
答案 0 :(得分:3)
我认为复杂性和可维护性是视图控制器控制的主要缺点。您需要通过视图控制器控制来实现许多细微之处,否则事情可能会以奇怪的方式中断。
有关正确实施视图控制器包含的更多技术帮助,请参阅:ParseError
...尤其请务必阅读标题为将子视图控制器添加到您的内容
的部分