2012-02-13 119 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

希望它有幫助。

相關問題