2016-06-20 3 views
1

В настоящее время я работаю над приложением в Swift, где в моем методе viewDidLoad() Я намеренно скрыты мои rightBarButton на моей навигационной панели, как это:Попытка сделать rightBarButton появляться после того, как сделать его исчезнуть с помощью Swift

self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(TableViewController.dismiss)) 
self.navigationItem.setRightBarButtonItem(nil, animated: true) 

Однако при определенных обстоятельствах я хотел бы отобразить rightBarButton. Как мне это сделать? Что было бы противоположностью вышеуказанной строки кода?

+1

Я боюсь, что вам придется его снова закодировать после того, как вы установите его 'nil', его больше не существует. –

+0

Не существует способа, по которому я могу установить значение boolean или alpha, чтобы скрыть/показать его? – syedfa

ответ

2

После того, как вы установили элемент кнопки на панели nil, он исчез. Что вы можете сделать, однако, сохранить кнопку элемент бар так:

let barButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(TableViewController.dismiss));

, а затем вы можете сделать это появляется/исчезает, как так:

self.navigationItem.rightBarButtonItem = barButtonItem 
self.navigationItem.setRightBarButtonItem(nil, animated: true) 

затем просто получить доступ к barButtonItem всякий раз, когда вам хотите, чтобы он появился/исчез.

2

Вы можете сделать одно из двух следующих вариантов:

  • Держите ссылку вашего UIBarButtonItem и каждый раз, когда вы исчезнете вы сохраните его тогда, когда вы хотите, чтобы показать его снова установить старое значение.

  • Воспроизвести цвет UIBarButtonItem и включить/отключить свойство, позволяющее взаимодействовать с ним.

Первый выбор всегда держать ссылку на глобальном уровне в UIBarButtonItem и второй необходимости знать точный цвет оригинального UIBarButtonItem дать в исходное состояние:

Первый вариант:

private var isHidden: Bool! 
private var righBarButtonItem: UIBarButtonItem! 

@IBAction func hideButton(sender: AnyObject) { 
    if self.isHidden == true { 
     self.isHidden = false 
     self.navigationItem.rightBarButtonItem = righBarButtonItem 
    } 
    else { 

     self.isHidden = true 
     righBarButtonItem = self.navigationItem.rightBarButtonItem 
     self.navigationItem.setRightBarButtonItem(nil, animated: true) 
    } 
} 

Второй вариант:

@IBAction func hideButton(sender: AnyObject) { 
    if self.isHidden == true { 
     self.isHidden = false 
     self.navigationItem.rightBarButtonItem?.tintColor = UIColor.clearColor() 
     self.navigationItem.rightBarButtonItem?.enabled = false 
    } 
    else { 
     self.isHidden = true 
     self.navigationItem.rightBarButtonItem?.tintColor = UIColor.blueColor() 
     self.navigationItem.rightBarButtonItem?.enabled = true 
    } 
} 

В приведенных выше примерах, которые я установил переменное состояние UIBarButtonItem для целей знать значение и и @IBOutlet, чтобы скрыть/показать UIBarButtonItem. Переменной isHidden необходимо установить ее начальное значение в viewDidLoad.

Я надеюсь, что это поможет вам.

Смежные вопросы