1

將視圖壓入UINavigationController堆棧並顯示後,我需要在某些情況下禁用Back按鈕,例如,在該屏幕上編輯數據時。如何禁用當前視圖中顯示的backBarButtonItem?

下隱藏後退按鈕

self.navigationItem.hidesBackButton=YES; 

,但我需要禁用它。

關於如何隱藏它或建議不首先顯示它,還有其他幾個答案,但這些不是我需要實現的。

+0

目前我通過創建一個自定義的leftBarButtonItem視圖解決了這個問題,並讓該操作在當前視圖中彈出視圖控制器。不幸的是,沒有簡單的(合法的)方法來獲得標準的左箭頭按鈕。 – ChrisP 2012-02-23 00:18:21

+0

我在apple.com上添加了一個功能請求,爲標準的左/右箭頭按鈕添加一個新的枚舉。 – ChrisP 2012-02-23 19:03:48

回答

0

您可以爲您的navigationController的導航欄代理實現其中一個委託方法。看看[UINavigationBarDelegate navigationBar:shouldPopItem:]方法。

從此方法返回YES或NO將啓用或禁用後退按鈕。

+0

此方法不控制項目是否從導航欄而不是啓用狀態添加(推送)或刪除(poped)? – ChrisP 2012-02-22 21:15:39

+0

它不像這樣簡單,因爲這個委託選擇器只負責導航欄,而不是控制器。如果你實現這個委託選擇器並返回YES,那麼你會看到工具欄彈出,但控制器沒有。我沒有嘗試彈出控制器,但我已經閱讀了其他人試圖做到這一點的故事,並沒有能夠獲得動畫正確的時間。 – tyler 2012-06-12 17:41:02

0

您可以實現一個leftBarButtonItem(無形的和沒有效力) 把它添加到您的當前視圖(self.navigationItem.leftBarButtonItem) 並刪除它來訪問你的返回按鈕。

0

如果你很好,整個導航欄被禁用,一個簡單的辦法是

self.navigationController.navigationBar.userInteractionEnabled = NO; 

當然,如果你有,你要保持啓用其他欄按鈕,這是行不通的。

相關問題