在应用程序中处理不同的视图控制器:创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类参考中阅读实现容器视图控制器部分。
希望能帮助到你。