0

我有一個嵌入在UINavigationController中的UIViewControllerrootViewController現在已包含一些按鈕leftBarButtonItems當推送新的UIViewcontroller時,保留leftBarButtonItems

現在,當我在UINavigationController的頂推新UIViewController我希望新UIViewController保留現有leftBarButtonItems擴展了Back - 按鈕。

現在情況如下:當我推新的UIViewController時,現有的leftBarButtonItems消失,只有Back -Button可見。

回答

1

每個UIViewController都有自己的「navigationItem」屬性,該屬性充當該viewcontroller的導航欄表示。當您將按鈕添加到特定UIViewController的navigationItem時,它們的作用域被限制在添加它們的viewcontroller中,並且它們不會保留到其他viewcontroller中。

基本上,您必須在加載時將按鈕添加到每個viewcontroller的navigationItem。你可以通過編寫添加一個方法來完成這個工作,使其更加簡單,而不是你的UIViewControllers。當你觸摸每個按鈕時會發生什麼情況,可能是特定於viewcontroller的,所以你必須考慮touch操作如何反饋給相關的viewcontroller。也許引入某種NavigationBarDelegate協議或什麼?

+0

這種探索是有道理的 – DanEEStar 2012-07-19 13:29:01

0

我發現什麼似乎是一個奇怪的方式來解決這個問題,當推動同一個視圖控制器的多個實例上一個細節視圖控制器,我認爲會工作類似。推新視圖控制器之前,我用這個:(瀏覽器是我的新的視圖控制器)

self.browser.navigationItem setLeftBarButtonItem:self.detailViewController.navigationItem.leftBarButtonItem animated:YES]; // Sets popover view controller button. 
    [self.detailViewController.navigationController pushViewController:self.browser animated:YES]; 

這可能不是做一個很好的方式,但它似乎在我的處境工作。

相關問題