2011-01-21 32 views
4

我在UISplitViewController裏面的右側視圖控制器中彈出了導航項與彈出窗口。當我將iPad旋轉到縱向時,只有該按鈕不會出現。代碼很好,我使用了同一個(當然不是絕對的),但是現在我有了這個奇怪的錯誤。UISplitViewController中缺少UIBarButtonItem

- (void)splitViewController:(UISplitViewController *)svc 
    willHideViewController:(UIViewController *)aViewController 
      withBarButtonItem:(UIBarButtonItem *)barButtonItem 
     forPopoverController:(UIPopoverController *)pc 
{ 
    barButtonItem.title = aViewController.title; 
    self.navigationItem.rightBarButtonItem = barButtonItem; 
/* 
this method gets called, class is set to be delegate of split view, 
barButtonItem && self.navigationItem are not nils. 
*/ 
} 

- (void)splitViewController:(UISplitViewController *)svc 
    willShowViewController:(UIViewController *)aViewController 
    invalidatingBarButtonItem:(UIBarButtonItem *)button 
{ 
    self.navigationItem.rightBarButtonItem = nil; 
}

所有的這些東西使用這樣的代碼被創建...

UISplitViewController *svc = [[UISplitViewController alloc] init]; 
UINavigationController *rightNav = [[UINavigationController alloc] init]; 
DetailViewController *dvc = [[DetailViewController alloc] initWithSomeArgs:args]; 
[rightNav pushViewController:dvc animated:NO]; 
svc.delegate = dvc; 
svc.viewControllers = [NSArray arrayWithObjects:tabBarController, rightNav, nil]; 
// tabBar is good, not nil and working well on the iPhone 
[self.window addSubview:svc.view]; 
[dvc release]; [rightNav release];

我不知道爲什麼不工作,我需要儘快弄清楚。請幫幫我。

+0

當你[自setPopoverController:pc];在第一個方法(和[self setPopoverController:nil];第二個)? –

+0

DetailViewController中沒有屬性popoverController – Woyo

回答

0

它看起來像你已經錯過了你的DetailViewController和UISplitViewController之間的引用出口。

+0

但是每次都成功調用委託方法。 – Woyo

1

我有類似的問題。我有一個Master-Detail應用程序並正在使用Storyboard。我的詳細信息視圖控制器嵌入在導航控制器中。 UISplitViewControllerDelegate方法正確實現,並且在設備旋轉時被調用。酒吧按鈕被正確添加,但不可見。

問題的原因:在我的Detail View Controller中的故事板中,我手動添加了一個導航欄,因爲我沒有看到任何導航欄。但是,這與我添加按鈕的導航欄並不相同。正確的導航欄隱藏在Storyboard中,因此在我的應用程序中不可見。

解決方案:我去了我的故事板中的詳細視圖控制器,並刪除了我手動添加的導航欄。然後,我點擊了導航控制器。在「屬性檢查器」下,我檢查了標記爲「顯示導航欄」的框。現在,在我的導航控制器和我的詳細視圖控制器以及我的應用程序中都可以看到正確的欄。