將視圖壓入UINavigationController堆棧並顯示後,我需要在某些情況下禁用Back按鈕,例如,在該屏幕上編輯數據時。如何禁用當前視圖中顯示的backBarButtonItem?
下隱藏後退按鈕
self.navigationItem.hidesBackButton=YES;
,但我需要禁用它。
關於如何隱藏它或建議不首先顯示它,還有其他幾個答案,但這些不是我需要實現的。
將視圖壓入UINavigationController堆棧並顯示後,我需要在某些情況下禁用Back按鈕,例如,在該屏幕上編輯數據時。如何禁用當前視圖中顯示的backBarButtonItem?
下隱藏後退按鈕
self.navigationItem.hidesBackButton=YES;
,但我需要禁用它。
關於如何隱藏它或建議不首先顯示它,還有其他幾個答案,但這些不是我需要實現的。
您可以爲您的navigationController的導航欄代理實現其中一個委託方法。看看[UINavigationBarDelegate navigationBar:shouldPopItem:]
方法。
從此方法返回YES或NO將啓用或禁用後退按鈕。
您可以實現一個leftBarButtonItem(無形的和沒有效力) 把它添加到您的當前視圖(self.navigationItem.leftBarButtonItem) 並刪除它來訪問你的返回按鈕。
如果你很好,整個導航欄被禁用,一個簡單的辦法是
self.navigationController.navigationBar.userInteractionEnabled = NO;
當然,如果你有,你要保持啓用其他欄按鈕,這是行不通的。
目前我通過創建一個自定義的leftBarButtonItem視圖解決了這個問題,並讓該操作在當前視圖中彈出視圖控制器。不幸的是,沒有簡單的(合法的)方法來獲得標準的左箭頭按鈕。 – ChrisP 2012-02-23 00:18:21
我在apple.com上添加了一個功能請求,爲標準的左/右箭頭按鈕添加一個新的枚舉。 – ChrisP 2012-02-23 19:03:48