在应用程序中处理不同的视图控制器:创build自定义内容视图控制器

在应用程序开发期间,我有问题来支持正确的应用程序体系 这是我正在开发的应用程序。 特别是,我需要支持如下的架构。

在这里输入图像说明

如您所见, MainViewController是应用程序的主控制器,并且必须在应用程序生命周期内pipe理不同的控制器。 在这种情况下, MainController是pipe理应用程序不同状态(如LOGIN_AREA,HOME_AREA等)的一种集中控制器(其视图的子视图始终在前面,将其视为菜单视图)。

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

由于MainViewController需要总是在其他视图( UIviewControllerX的视图)之前显示其视图的子视图,所以我将其设置为rootViewController

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

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

 - (void)manageController { if(currentState == LOGIN_AREA) { self.currentController = [[[LoginViewController alloc] init] autorelease]; } // other stuff here... [self.view addSubView:self.currentController.view]; } 

上述模式似乎工作,但我不敢肯定,如果这可能是正确的。 另外,如果一个UIViewController (例如UIViewController1 )必须是一个UINavigationController ,情况会变得复杂。

我已阅读iOS的视图控制器编程指南 。 特别是,我发现有趣的部分创build自定义内容视图控制器,但我还没有find任何示例来创build一个自定义的。

所以,我的问题是以下。

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

先谢谢你。

对于那些感兴趣的人。

实施类似的机制有两种不同的方法。

1)实现一个自定义内容容器。 这是一个复杂的任务,但是这是可能的。 欲了解更多信息,请阅读高质量视图控制器

2)使用新的iOS 5 API。 有关更多信息,可以在UIViewController类参考中阅读实现容器视图控制器部分。

希望能帮助到你。