UIBarButtonItem.enabled
プロパティを設定する公式の方法はありますか?前のコントローラーでbackButtonItemを設定しようとしました。ただし、enabled
プロパティは無視されます。
このシンプルな詳細 サンプルプロジェクト 。
「独自のleftBarButtonItemを作成し、そのアルファを設定する」などの解決策は望まない。
編集:非表示にするのではなく、淡色で無効にし、ユーザー操作を無効にします。無効なleftBarButtonItem
とまったく同じ動作です。
現在、enabled
プロパティを使用して戻るボタンを無効にすることはできません。カスタムアイテムを作成しない限り、backBarButtonItem
プロパティはnil
になり、enabled
プロパティは無視されます。これを回避する方法はいくつかあります(満足のいくものではありません)。
これは、Appleが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)
}
ただし、これには、先頭に三角形のインジケータが付いたバックバーボタンスタイルはありません。
ViewController2.Swiftクラスに以下のコードを追加します。
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.hidesBackButton = true;
}
戻るボタンが非表示になります。
非表示にする場合、UInavigationItem
にはhidesBackButton
プロパティがあります。