有沒有任何官方的方法如何設置UIBarButtonItem.enabled
屬性?我試圖在前一個控制器中設置一個backButtonItem。但enabled
屬性被忽略。如何禁用導航欄中的後退按鈕
更多在這個簡單的example project。
我不希望像一些解決方案「使自己的leftBarButtonItem並設置其阿爾法......」
編輯:我不想隱瞞,只能用暗淡的顏色和禁用用戶禁用相互作用。這與禁用leftBarButtonItem
的行爲完全相同。
有沒有任何官方的方法如何設置UIBarButtonItem.enabled
屬性?我試圖在前一個控制器中設置一個backButtonItem。但enabled
屬性被忽略。如何禁用導航欄中的後退按鈕
更多在這個簡單的example project。
我不希望像一些解決方案「使自己的leftBarButtonItem並設置其阿爾法......」
編輯:我不想隱瞞,只能用暗淡的顏色和禁用用戶禁用相互作用。這與禁用leftBarButtonItem
的行爲完全相同。
如果你想隱藏它,UInavigationItem
有一個hidesBackButton
屬性。
在您的ViewController2.swift類中添加以下代碼。
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.hidesBackButton = true;
}
它會隱藏您的後退按鈕。
截至今日,無法使用enabled
屬性禁用後退按鈕。 backBarButtonItem
屬性將爲nil
,除非您創建自定義項目,即使這樣它也會忽略enabled
屬性。有一些(不令人滿意的)方法可以解決這個問題。
這是蘋果希望你做因爲他們忽視了enabled
財產。這很簡單,只要
navigationItem.hidesBackButton = true
而且應該是首選的方法,除非你有很好的理由。
您可以禁用整個導航欄上的用戶互動和色調它使後退按鈕顯示爲禁用。
navigationController?.navigationBar.userInteractionEnabled = false
navigationController?.navigationBar.tintColor = UIColor.lightGrayColor()
這不,不幸的是,影響其他元素的導航欄,以及因此,如果,例如,你必須在右側另一欄按鈕項目它可能不是一個選項。
的leftBarButtonItem
不忽略enabled
屬性,因此你可以創建一個自定義項目和手動觸發彈出時被激活。
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(ThisClass.backButtonTapped))
...
navigationItem.leftBarButtonItem?.enabled = false
func backButtonTapped() {
self.navigationController?.popViewController(animated: true)
}
但是,這將不具有帶前三角指示器的後槓按鈕樣式。
SWIFT 4
使導航項目的@IBOutlet,然後將其禁用:
self.btnBackNavigation.isEnabled = false
我不想隱藏它,我更新了我的問題。 – Deny
我已嘗試所有可能的選項,但它不可能禁用後退按鈕看鏈接http://stackoverflow.com/questions/25362050/how-to-disable-a-navigation-bar-button-item-in-ios ,要麼你必須創建自定義後退按鈕。 – BKjadav