我使用的是UISplitViewController
內的UITabBarController
與拆分視圖的主窗格純UIViewController
和在細節窗格,它本身含有香草UIViewController
一個UINavigationController
。UISplitViewController委託方法不叫
我知道Apple建議僅在根級別使用拆分視圖,但是我已經看到其他應用程序(例如,亞馬遜 - 「願望清單」選項卡)在選項卡中使用拆分視圖,所以我相信這是可能的。
我的問題是,拆分視圖的委託方法,即。 UISplitViewControllerDelegate
中的那些不會被調用,這會阻止我在切換到縱向模式時創建我的彈出式菜單。
有問題的方法有以下幾種 -
// Called when a button should be added to a toolbar for a hidden view controller
- (void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc;
// Called when the view is shown again in the split view, invalidating the button and popover controller
- (void)splitViewController: (UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem;
// Called when the view controller is shown in a popover so the delegate can take action like hiding other popovers.
- (void)splitViewController: (UISplitViewController*)svc popoverController: (UIPopoverController*)pc willPresentViewController:(UIViewController *)aViewController;
的UISplitViewController
確實收到旋轉通知。
我能到被稱爲willShowViewController方法,如果我強迫狀態欄取向在應用程序啓動之初景觀右(或左),使用
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
然而,willHideViewController
沒有按不會打電話。我不想強制應用程序開始景觀。如果我做同樣的事情,但強迫它肖像,我沒有收到回調。
我不明白爲什麼分割視圖控制器沒有調用它的委託方法,否則它的行爲是正確的。這些方法應該從它的方法 - 被稱爲
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
內部,當我斷點在這裏面,我可以檢查委託設置,它仍然活着。
一直呆在這一整天!其他一切都很好,我很高興splitview/tabbar/navbar組合運行良好。我只需要這些通知。
我應該在旋轉時手動調用它們嗎?當'UISplitViewController'應該這樣做時,似乎非常錯誤。
你好, 你介意一點點進一步闡述您的解決方案? 我現在有同樣的問題。我有一個tabcontroller至少有3個選項卡的分割視圖。我將每個splitview中的detailview添加到一個代表splitview的自己的子類導航控制器中。這對於目前可見的選項卡來說是完美的,但對於其他選項則不是。所以當我旋轉我的視圖,並更改選項卡它看起來都搞砸了,直到我旋轉它。再次,然後只爲可見的看法。 – 2011-02-09 17:07:01
嗯抱歉,我不確定..我敢肯定我在這裏看過一篇文章,指出在splitview選項卡和旋轉之間更改會導致問題,並且splitviwe應始終處於窗口級別 - 甚至不會在標籤控制器。我猜想這是由文檔支持的。我實際上是從零開始構建自己的SplitView,因爲我需要水平分割 – Sam 2011-02-09 22:29:37