2012-02-13 90 views
1

在应用程序开发过程中,我遇到了问题以支持正确的应用程序体系结构。这对我目前正在开发的应用程序来说是正确的。特别是,我需要支持如下的架构。在应用程序中处理不同的视图控制器:创建自定义内容视图控制器

enter image description here

正如你所看到的,MainViewController是应用程序的主控制器,并具有对应用程序生命周期内管理不同的控制器。在这种情况下,MainController是管理应用程序不同状态(例如LOGIN_AREA,HOME_AREA等)的一种集中式控制器(其视图的子视图始终在前面,将其视为菜单视图)。

在下面我写了一些考虑,以实现上述架构。

由于MainViewController需要始终在其他视图前显示其视图的子视图(UIviewControllerX的视图),因此我将其设置为rootViewController

由于MainViewController必须由其他控制器(例如UIViewControllers1)访问,它们需要有一个(弱)引用它。

MainViewController有一个公共方法来管理应用程序状态。它存储当前的控制器,并将其视图添加到选定的控制器视图作为其子视图。例如:

- (void)manageController 
{ 
    if(currentState == LOGIN_AREA) 
    { 
     self.currentController = [[[LoginViewController alloc] init] autorelease]; 
    } 

    // other stuff here... 

    [self.view addSubView:self.currentController.view]; 
} 

上述模式似乎工作,但我不敢肯定,如果它可能是正确的。另外,如果UIViewController(例如UIViewController1)必须是UINavigationController,则情况变得复杂。我已阅读View Controller Programming Guide for iOS。特别是,我发现有趣的部分Creating Custom Content View Controllers,但我还没有找到任何例子来创建一个定制的。

所以,我的问题是以下。

您能否给我建议以实现以下架构?或者你可以给我一些技巧来开发一个自定义内容视图控制器?

预先感谢您。

+0

看来你混淆了UIViewControllers和UIViews? – onnoweb 2012-02-13 16:10:59

+0

也许我的问题不清楚。你为什么想这个混乱?先谢谢你。 – 2012-02-13 16:47:31

回答

1

对于那些有兴趣。

要实现类似的机理有两种不同的方式。

1)实现自定义内容容器。这是一项复杂的任务,但这是可能的。欲了解更多信息,请参阅writing-high-quality-view-controller

2)使用新的iOS 5 API。欲了解更多信息,可以阅读实施容器视图控制器部分UIViewController Class Reference

希望它有帮助。

相关问题