試圖圍繞如何圍繞UINavigationController構建應用程序來包裝我的頭。在我看來,大多數解釋都假設應用總是從根控制器開始,然後從那裏開始鑽取,但我不清楚這是如何適應登錄/註冊步驟的情況。該結構是這樣的:iPhone UINavigationController應用程序設計
Home page | Main app (typical nav hierarchy)
------------ |---------------------------------
Log in ----> Login page | App section 1
------------ | App section 2
Do login ------------------------> | etc.
<- Cancel |
|
Register -------------------> Register page |
----------------- |
Do registration ---> |
<- Cancel |
所以基本上我假設「主應用程序」控制器實際上應該是應用程序的根控制器,是否正確?在這種情況下,我不清楚如何處理坐在它前面的整個過程(基本上就像是一個與應用程序導航結構分離的導航結構)。 「主頁」是在主應用程序上顯示的模式控制器,還是用於登錄/註冊步驟的單獨導航控制器,以便在登錄後將其彈出來讓我們回到應用程序根目錄?
希望我只是過分簡單的事情,只是還沒有點擊我。任何指針不勝感激。
編輯:所以這裏是我結束了,這似乎爲我所需要的。我有兩個UINavigationControllers,它們都分配給IB中的MainWindow,並帶有獨立的起始NIB。一個是應用程序啓動導航控制器(主頁/登錄/註冊),另一個是主要的應用程序導航控制器。我的應用程序委託有這樣的代碼:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[window addSubview:startNavController.view];
[window makeKeyAndVisible];
return YES;
}
- (void)activateMainApp {
[startNavController.view removeFromSuperview];
[window addSubview:appNavController.view];
[window makeKeyAndVisible];
}
登陸/註冊的最後一步,我有這樣的代碼是什麼叫應用程序的委託,使導航控制器之間的切換:
- (IBAction)continuePressed {
// Transfer control to the main app nav controller:
MyAppDelegate *app = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
[app activateMainApp];
[app release];
}
我懷疑我可以用一個導航控制器完成這個任務,但是這對我來說基於我的視圖結構是合乎邏輯的,並且似乎可行,並且我最終將主視圖作爲應用導航控制器的根視圖。任何額外的反饋意見,如果有什麼骨頭的話,讚賞。
你不應該在你的視圖控制器中調用'[app release]',因爲你沒有保留它。 – jowie 2012-10-19 14:05:06
@bmosekau:爲什麼使用:'[window addSubview:startNavController.view];'而不是'self.window.rootViewController = startNavController'等等。 – 2013-08-06 06:38:16
@ user2568508鄧諾。我不得不跳進我的時間機器,並撥回3年來回答這個問題。 – 2013-08-08 05:57:41