使用View Controller Containment的缺点

时间:2015-09-01 00:22:09

标签: ios objective-c iphone uiviewcontroller

我开发了很多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遏制时,内存和实用程序是否存在任何缺点(当然,还有手动处理堆栈的额外工作,例如“后退”按钮)?

1 个答案:

答案 0 :(得分:3)

我认为复杂性和可维护性是视图控制器控制的主要缺点。您需要通过视图控制器控制来实现许多细微之处,否则事情可能会以奇怪的方式中断。

有关正确实施视图控制器包含的更多技术帮助,请参阅:ParseError

...尤其请务必阅读标题为将子视图控制器添加到您的内容

的部分