2011-06-08 104 views
0

UISplitView旋轉過程中有以下的委託方法是佈局的輔助修改:容式UISplitView不發送委託方法

- (void)splitViewController:(UISplitViewController *)svc 
    willHideViewController:(UIViewController *)aViewController 
      withBarButtonItem:(UIBarButtonItem *)barButtonItem 
     forPopoverController: (UIPopoverController *)pc; 

- (void)splitViewController:(UISplitViewController *)svc 
    willShowViewController:(UIViewController *)aViewController 
    invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem; 

這些方法是通過方法私有UISplitView,命名爲_viewControllerHiding:_updateMasterViewControllerFrame分別被調用。這兩個都是直接從事件循環的頂部調用,顯然是延遲調用。但是,如果我將自己的視圖控制器放置爲窗口的根(不能將分割視圖控制器放置在導航控制器中),並將分割視圖置於其下,則不會正確發送委託方法。 (實際上,一個是在viewDidLoad發送,但沒有上旋轉。)主視圖的藏匿仍然存在,但沒有代表愛的佈局,以幫助(管理酥料餅/物品欄)。

我試圖轉發以下視圖控制器的方法所包含的拆分視圖,但它們不觸發它。

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation; 
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
           duration:(NSTimeInterval)duration; 
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
             duration:(NSTimeInterval)duration; 

任何人都有如何獲得這些UISplitView委託方法觸發任何見解?最好不要私人API。

回答

0

看看Combined View Controller Interfaces,你會看到不應該是拆分視圖控制器包含任何其他類型的視圖控制器內。你通過將自己的視圖控制器放在你的視圖控制器中來打破這個規則,所以它並不是很好。

+0

是的,我推了一下設計規格,謝天謝地他們抽象/正式化容器控制器5.0 – bshirley 2011-06-09 00:15:33

+0

我重新設計了代碼,放置一個「管理員」負責換出窗口的根控制器(並在它們之間轉換合理) - 除了操縱它之外,經理與視圖/視圖控制器層次結構沒有任何關係 – bshirley 2011-06-11 19:05:47