Ответ 1
На сегодняшний день невозможно отключить кнопку "назад" с помощью свойства enabled
. Свойство backBarButtonItem
будет nil
, если вы не создадите пользовательский элемент, и даже тогда оно будет игнорировать свойство enabled
. Есть несколько (неудовлетворительных) способов обойти это.
Скрыть кнопку
Это то, что Apple хочет, чтобы вы делали, учитывая, что они игнорируют свойство enabled
. Это так же просто, как
navigationItem.hidesBackButton = true
и должен быть предпочтительным подходом, если у вас нет веских причин.
Отключить и подкрасить панель навигации
Вы можете отключить взаимодействие с пользователем на всей навигационной панели и подкрасить его, чтобы сделать кнопку возврата неактивной.
navigationController?.navigationBar.isUserInteractionEnabled = false
navigationController?.navigationBar.tintColor = UIColor.lightGrayColor()
Это, к сожалению, влияет и на другие элементы на панели навигации, поэтому может не подойти, если, например, у вас есть другой элемент кнопки панели справа.
Использовать пользовательский элемент левой панели
leftBarButtonItem
не игнорирует свойство enabled
, поэтому вы можете создать пользовательский элемент и запускать всплывающее окно вручную при его активации.
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(ThisClass.backButtonTapped))
...
navigationItem.leftBarButtonItem?.isEnabled = false
func backButtonTapped() {
self.navigationController?.popViewController(animated: true)
}
Это, однако, не будет иметь стиль кнопки задней панели с ведущим треangularьным индикатором.