2011-10-24 58 views
2

我設置了一個基於主 - 細節應用程序的故事板,將詳細信息視圖嵌入到導航控制器中,並添加了一個新的表視圖控制器對象,我將其用作第二個詳細視圖控制器。UISplitViewController在推送新細節時不調用委託方法

然後我用下面的代碼推送新的詳細視圖控制器(而不是segue,因爲我同時推送了根視圖和詳細視圖控制器,只顯示了詳細視圖代碼)。

// Push the detailView view controller: 
NewClass *newViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"test"]; 

newViewController.navigationItem.hidesBackButton = YES; 
self.splitViewController.delegate    = newViewController; 

[self.detailViewController pushViewController:newViewController animated:YES]; 

除了在推送之前或之後從未調用splitView委託方法以外,此功能完美無缺。如果我在縱向模式下執行此操作,則在按下detailViewController後,下拉masterView彈出窗口的按鈕不會顯示,直到我旋轉到橫向模式,然後返回縱向模式。

如何導致willHideViewController/willShowViewController分離視圖控制器委託方法被調用或手動導致它們被調用?

回答

2

所以從我發現,它不會調用方法,因爲方向沒有改變。

,你所要做的就是從呈現視圖控制器通過按鍵,因爲它已經捆綁到酥料餅是這樣的:

if(self.navigationItem.leftBarButtonItem != nil) { 
    newViewController.navigationItem.leftBarButtonItem = self.navigationItem.leftBarButtonItem; 
} 

// Push the newViewController 
+0

感謝張貼您的解決方案。我有這個確切的問題,它已經讓我堅持了幾天。 您是否介意(如果您還記得 - 我瞭解它是在一年前),告訴我您在哪裏找到的,因爲方向沒有改變,它不會調用方法? – Darrrrrren

+1

在UISplitViewController類引用的底部(http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewControllerDelegate_protocol/Reference/Reference.html#//apple_ref/occ/intfm/UISplitViewControllerDelegate/splitViewController :willShowViewController:invalidatingBarButtonItem :)在這兩個方法的討論部分中,它說:「當視圖控制器從縱向旋轉到橫向時」(反之亦然)....當你推新視圖控制器時,你並不是不旋轉。 – lnafziger

+0

謝謝。我在猜測我正在做一些不被認爲會遇到這個問題的東西,但它不是一個炫目的東西,所以我會坐在它上面一段時間。 – Darrrrrren

相關問題