1

好吧,所以我有一個tabbar iPhone應用程序。 tabbarcontroller包含大約5個視圖控制器,每個嵌入在他們自己的導航控制器中,除了1之外,我只是在IB中添加了一個導航欄,以便在整個應用程序中保持一致的外觀。在應用程序中的每個導航欄上,我都需要一個rightBarButtonItem,它將打開相同的模式視圖控制器,無論它從何處被選擇。與音樂應用程序中的「正在播放」按鈕類似,我希望按鈕保留在每個導航欄上,而不管我在哪個選項卡上或導航控制器有多深。我會如何去做這樣的事情?有什麼方法可以簡單地將按鈕應用於每個導航欄?UIAppearance可以將圖像應用於應用中的每個導航欄?提前感謝任何想法。在tabbarcontroller內的所有導航欄上的持久UIBarButtonItem

回答

2

一個簡單的方法是創建一個基本視圖控制器,所有其他視圖控制器都從其中擴展。

完成此操作後,您可以在viewDidLoad方法中設置UIBarButtonItem,該方法將自身附加到導航欄並監聽事件。從那裏,觀察事件並呈現模態視圖控制器或將適當的視圖控制器推入導航堆棧將非常容易。

我使用這種方法作爲「登出」欄按鈕項目,當點擊時顯示登錄視圖控制器作爲用戶退出其帳戶的快速替代方案。

唯一不利的一面是,從基本視圖控制器繼承的每個視圖控制器將在導航欄中具有註銷按鈕。如果您需要其他按鈕或想要隱藏默認按鈕,則需要替換爲其他按鈕。

這是一個快速簡單的方法,如果需要也很容易刪除,因爲您可以更改頭文件以反映繼承,而不是篩選幾個視圖控制器,刪除該按鈕的每個實例。這也很容易維護,因爲您可以在任何子類中重載按鈕目標以在事件觸發時執行不同的功能。