2013-04-14 29 views
0

我不知道如何更準確地提出此問題。我有一個主/細節,並以編程方式創建整個事情。我使用UISplitViewController的子類,並使用兩個控制器填充它,並且看起來應該如此,直到我設置splitViewController:shouldHideViewController:inOrientation,以便它在縱向模式下返回YES。UISplitViewController:以編程方式製作彈出窗口控制器訪問按鈕出現在詳細視圖

當我將主人隱藏在肖像和肖像顛倒,如預期的那樣,它隱藏起來。但是,我無法在splitViewController:willHideViewController:withBarButtonItem:forPopoverController的詳細視圖頂部的導航欄中添加「主」按鈕。這可能是因爲我對我應該如何完成這項任務有一個基本的誤解。

我跟着蘋果的例子,做了:

barButtonItem.title = NSLocalizedString(@"Master", @"Master"); 
[detailController.navigationItem setLeftBarButtonItem:barButtonItem animated:YES]; 

我沒有得到任何錯誤,但沒有任何按鈕。我推測這可能是因爲我保存的detailController在我的子類中是UINavigationController而不是UIViewController

關於此任何指導非常感謝!

回答

0

寫完這個,我意識到有在佈線這整個事情的幾個錯誤:真的希望你不僅要設置barButtonItem冠軍,但也將其添加到導航

  1. splitViewController:willHideViewController:withBarButtonItem:forPopoverController細節控制器的欄。

  2. 如果您想要以編程方式關閉彈出窗口,則必須在主視圖中將splitViewController:willHideViewController:withBarButtonItem:forPopoverController中提供的彈出窗口存儲在某個位置。

所以,回答問題的第一部分是:

barButtonItem.title = NSLocalizedString(@"Master", @"Master"); 
[[detailController.topViewController navigationItem] setLeftBarButtonItem:barButtonItem animated:YES]; 

這讓我可以在導航欄上設置一個UIBarButtonItem的UIViewController中。我確信我可以直接在UINavigationController上做到這一點,但並未立即看到如何。

這個問題的第二個問題,未涉及部分涉及彈出窗口一旦可見時如何處理。同樣,我需要的細節控制器知道實際酥料餅是什麼,因此它可以被解僱,所以在splitViewController:willHideViewController:withBarButtonItem:forPopoverController,我添加的代碼,如:

[masterController.navigationItem topViewController].popoverController = pc; 

其中pc是傳遞到委託方法的參數值。然後,在我的主控制器,我有一個UITableView並在didSelectRowAtIndexPath,我只是這樣做:

if(popoverController) 
    [popoverController dismissPopoverAnimated:YES]; 

而這正是我在學校的iOS今天學到:)

相關問題