我搜索了高和低,我不確定我出來的是處理這個問題的最好方法(儘管它似乎是唯一的方法)。在UINavigationController中支持縱向和橫向視圖的最佳實踐
根據Want to use muliple nibs for different iphone interface orientations我實現了相關的方法,一切似乎都正常工作。不幸的是,我不得不處理一個UINavigationController,每個頁面都必須支持縱向和橫向模式,並在兩種模式下重現相同的功能。這意味着,如果用戶在某個時候決定從縱向切換到橫向,整個應用程序應允許他在所選模式下來回瀏覽頁面。
顯然,缺少的文檔是如何處理這個問題。在我的觀點中,我有許多帶有附加showChild方法的按鈕來執行導航。所有在縱向模式下都能正常工作(就我所知,這是默認模式)。方法是這樣的:
- (IBAction)showChild:(UITapGestureRecognizer *)sender {
UIView *view = [sender view];
PortraitViewController *nextPortraitViewcontroller = [[PortraitViewController alloc] initWithNibName:@"Portrait" bundle:nil];
[self.navigationController pushViewController:nextPortraitViewcontroller animated:YES];
}
但是,當涉及到景觀模式我得到混合的結果。在LandscapeViewController類中的showChild:方法完全相同,它從PortraitViewController開始構建一個視圖並將其推送到導航控制器。這一切似乎都很順利,但是當我回到原來的位置時,顯示的是前一個PortraitViewController,而不是風景,並且它的子視圖都散佈在周圍,而不是我放置的位置。
現在的問題是:由於蘋果公司似乎並不關心文檔和最佳實踐(afaik這整個機制是非常不理想,我可以說這是來自人機交互設計和編程)什麼是correc - 蘋果公司的做法?
我想你想在viewWillAppear中測試:以前看到的視圖控制器,它仍然是在方向是當它最後出現 – bshirley 2011-06-02 18:57:15
可悲的是,這些方法沒有得到時ViewControllers被推稱爲和彈出一個UINavigationController。我可以使一個自定義的RootViewController成爲一個UINavigationControllerDelegate並使用相關的方法,但我不知道如何。 – Morpheu5 2011-06-02 19:56:11
好吧,我有點解決了使用自定義RootViewController並將其設置爲導航控制器的代表。不幸的是,它不能如我所願地工作,但我明天會檢查它。從現在開始,我正在使用模擬器,這對於定位非常糟糕。 – Morpheu5 2011-06-02 22:11:42