Ответ 1
Скрыть
можно с помощью <[self.navigationItem setHidesBackButton:YES animated:YES];
Я пытаюсь отключить элемент кнопки панели навигации (поворачивается на серый и не реагирует на касания).
Я попробовал следующее:
[self.navigationItem.backBarButtonItem setEnabled:NO];
Что не работает. Отключение элемента правой кнопки работает как прелесть.
Удивительно, но я не мог найти аналогичный вопрос о SO. Ближайший один был прятать кнопку (которая работает кстати), но это не так элегантно (или добавление метки для покрытия кнопки и предотвратить штрихи, которые сохраняют тот же цвет задней кнопки → тоже не так элегантно:/),
Я должен упомянуть, что контроллер вида представляет собой контроллер табличного представления, который нажимается другим навигационным контроллером. (т.е. кнопка назад добавляется автоматически, а не через IB или программно)
Любые идеи?
Скрыть
можно с помощью <[self.navigationItem setHidesBackButton:YES animated:YES];
Вам нужно создать пользовательскую кнопку "Назад", чтобы отключить ее. Вот простой пример (Нет необходимости скрывать backButtonItem):
Обратите внимание, что вы, вероятно, захотите отключить жест спиной салфетки (см. здесь: Как отключить жест повторного салфетки в UINavigationController на iOS 7)
class MyClass: UIViewController {
private var backButton: UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()
backButton = UIBarButtonItem(title: "Back", style: .Plain, target: self, action: "goBack")
navigationItem.leftBarButtonItem = backButton
}
func goBack() {
navigationController?.popViewControllerAnimated(true)
}
func toggleBackButton() {
backButton.enabled = (backButton.enabled == false) ? true : false
}
}