Подтвердить что ты не робот

Отключить кнопку навигации на панели навигации

Я пытаюсь отключить элемент кнопки панели навигации (поворачивается на серый и не реагирует на касания).

Я попробовал следующее:

[self.navigationItem.backBarButtonItem setEnabled:NO];

Что не работает. Отключение элемента правой кнопки работает как прелесть.

Удивительно, но я не мог найти аналогичный вопрос о SO. Ближайший один был прятать кнопку (которая работает кстати), но это не так элегантно (или добавление метки для покрытия кнопки и предотвратить штрихи, которые сохраняют тот же цвет задней кнопки → тоже не так элегантно:/),

Я должен упомянуть, что контроллер вида представляет собой контроллер табличного представления, который нажимается другим навигационным контроллером. (т.е. кнопка назад добавляется автоматически, а не через IB или программно)

Любые идеи?

4b9b3361

Ответ 1

Скрыть

можно с помощью <
[self.navigationItem setHidesBackButton:YES animated:YES];

Ответ 2

Вам нужно создать пользовательскую кнопку "Назад", чтобы отключить ее. Вот простой пример (Нет необходимости скрывать 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
    }
}