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

Показать/скрыть barButtonItem

Я пытаюсь показать/скрыть UIBarButtonItem. Я добавил barButton в правую сторону в storyboard. Затем в viewDidLoad я сделал rightBarButtonItem до nil. Позже я установил его в button, который я добавил в storyboard. Здесь мой код:

// Right barButtonItem added in storybord:
@IBOutlet weak var deleteBarButton: UIBarButtonItem! 

// viewDidLoad
self.navigationItem.rightBarButtonItem = nil

// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton

Когда я устанавливаю self.deleteBarButton в rightBarButtonItem, ничего не происходит. Он не показывает это. Что я делаю неправильно, и какой правильный/самый эффективный способ показать/скрыть barButtonItem?

Обновление

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

self.deleteBarButton.hidden = true

Но я получаю следующую ошибку:

UIBarButtonItem не имеет члена с именем 'hidden'

4b9b3361

Ответ 1

Только что получил ответ! Все, что вам нужно сделать, это создать strong IBOutlet, тогда вы можете сделать следующее:

// viewDidLoad
self.navigationItem.rightBarButtonItem = nil

// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton

Ответ 2

Обновление 2

Вы можете просто навести текст кнопки на ничего:

self.deleteBarButton.title = "";

Обновление 1

Я бы использовал свойство enabled, чтобы осветить кнопку следующим образом (хотя она не полностью делает кнопку невидимой, она позволяет пользователю узнать, что она не выполнит действие).

Это может действовать как переменная, чтобы вы знали, что кнопка скрыта в вашем случае:

Освещен: (место в ViewDidLoad)

self.deleteBarButton.enabled = true;

Темнее: (место позже)

self.deleteBarButton.enabled = false;

Затем я добавлю следующее, чтобы полностью исчезнуть:

self.navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.clearColor();

Ответ 3

Попробуйте создать свой barButton вручную в viewDidLoad, а затем отобразить/скрыть вашу кнопку.

код:

var barButton: UIBarButtonItem!

func viewDidLoad() {
    super.viewDidLoad()
    barButton = UIBarButtonItem(title: "Title", style: .Plain, target: self, action: Selector("target_function"))
    self.navigationItem.rightBarButtonItem = barButton
}

func someFunction() {
    self.navigationItem.rightBarButtonItem = nil
    // or
    self.navigationItem.rightBarButtonItem = barButton
}

Ответ 4

Это работает идеально для меня.

self.navBar.title = ""
self.navBar.enabled = false