2011-05-13 83 views
2

我想知道以下是切換視圖的可接受方式嗎?通過設置根視圖控制器切換視圖有什麼問題嗎?

AppDelegate.m

- (IBAction) switchViews 
    { 
    if (self.window.rootViewController == self.viewController) { 
     self.window.rootViewController = self.settingsNavigationViewController; 
    } else { 
     self.window.rootViewController = self.viewController; 
    } 
} 

雙方的viewController和settingsNavigationViewController從筆尖文件在應用程序啓動時加載。

主視圖(viewController)包含一個帶有3個圖像視圖的滾動視圖,以實現無限滾動效果,以及頂部的搜索欄和底部的工具欄。

第二個視圖用於我的應用程序設置。它是一個類似於設置包的導航控制器。

這兩個視圖都有一個調用switchView的按鈕;

我需要重組我的應用嗎?或者這是做這件事的好方法,還是我需要重構我的應用?

回答

2

雖然它可能做到這一點,(蘋果文件在這裏解釋並似乎沒有防止這種

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html%23//apple_ref/occ/instp/UIWindow/rootViewController

這也意味着現有的意見被刪除..

它肯定有一點關於它的代碼味道。由於這是一個設置對話框,爲什麼不將您的設置導航控制器加載到模態視圖中(如下所示)。就個人而言,這似乎更清潔一點,並與用戶可能期望的更一致...

[[self.viewController] presentModalViewController:self.settingsNavigationViewController animated:YES]; 
+0

謝謝。這對我正在嘗試做的事情非常合適。改變了我的代碼: ' - (IBAction爲)switchViews { 如果(self.viewController.modalViewController!){ [self.viewController presentModalViewController:self.settingsNavigationViewController動畫:是]; } else { [self.viewController dismissModalViewControllerAnimated:YES]; } }' – 2011-05-13 17:45:14

-1

我認爲你必須使用tabbarcontroller。

+0

對不起,但這是不正確的。請參閱接受的答案。 – 2011-12-08 19:24:48