На сегодняшний день нельзя отключить кнопку «Назад», используя свойство enabled
. Свойство backBarButtonItem
будет nil
, если вы не создадите пользовательский элемент, и даже тогда он будет игнорировать свойство enabled
. Есть пара (неудовлетворительных) способов обойти это.
скрыть кнопку
Это то, что компания Apple хочет, чтобы вы сделать, учитывая, что они игнорируют enabled
собственность. Это так же просто, как
navigationItem.hidesBackButton = true
и должен быть предпочтительным подходом, если у вас нет веских причин.
Отключить и Tint панель навигации
Вы можете отключить взаимодействие с пользователем на всей панели навигации и подкрасить его, чтобы сделать кнопку назад появляется отключена.
navigationController?.navigationBar.userInteractionEnabled = false
navigationController?.navigationBar.tintColor = UIColor.lightGrayColor()
Это, к сожалению, влияет на другие элементы в панели навигации, а поэтому он не может быть вариант, если, например, у вас есть еще кнопка бар элемент на правой стороне.
Используйте кнопки пользовательского Left Bar Item
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)
}
Это, однако, не имеет стиль кнопки задней панели с ведущим треугольным индикатором.
Я не хочу, чтобы скрыть это, я обновил свой вопрос. – Deny
Я попробовал все возможные варианты, но его невозможно отключить кнопку «Назад». Посмотрите ссылку http://stackoverflow.com/questions/25362050/how-to-disable-a-navigation-bar-button-item-in-ios , Либо вам нужно создать пользовательскую кнопку возврата. – BKjadav