2015-05-07 5 views
3

Я хочу настроить кнопку возврата, чтобы показать какой-то другой текст, чем заголовок предыдущего viewController.Swift: backBarButtonItem пользовательский текст

Я пробовал:

self.navigationItem.backBarButtonItem!.title = "CustomText" 

в ViewDidLoad() метод в соответствующем ViewController.

Здесь я прочитал backBarButtonItem in iOS (Swift), что левая кнопка бара работает здесь, но в моем случае она возвращает нуль.

Благодарим за помощь!

+0

Прочитайте документацию 'backBarButtonItem' и установите нужные значения на соответствующих контроллерах представления. –

+0

попробуйте переместить его в viewWillAppear(). – MDB983

ответ

3

Я согласен с @ Amit89, но я предлагаю добавить self.navigationItem.title = "CustomText" под viewWillDisappear так:

override func viewWillDisappear(animated: Bool) { 
    super.viewWillDisappear(animated) 
    self.navigationItem.title = "CustomText" 
} 

В противном случае, ваша спина название кнопка исчезнет внезапно после того, как новый вид контроллера толчок анимация закончена.

Кроме того, не забудьте сбросить заголовок контроллера старого вида, когда он появится.

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    self.navigationItem.title = "Original Title" 
} 
+0

Оба видаWillDisappear и viewDidDisappear будут делать трюк, все зависит от вашего требования. – Amit89

+0

Оба выполняют свою работу, но viewWillDisappear лучше в этом случае из-за отсутствия отставания в показе нового названия. Спасибо! Однако, мне очень интересно, для чего это backBarButtonItem, если не для этой цели? – DCDC

+0

Теперь задача заключается в том, как избежать этого запаздывания, которое возникает при возврате к контроллеру A – DCDC

3

Лучшее место для этого изменения названия находится в его предыдущем виде контроллера viewDidDisappear.

Ex: Вы хотите видеть другое название в ViewControllerB

ViewControllerA -> ViewControllerB.

В методе viewDidDisappear ViewControllerA «s,

override func viewDidDisappear(animated: Bool) { 
      self.navigationItem.title = "ABC" 
} 

Так что, когда он будет идти к ViewControllerB, вы увидите "ABC" в качестве задней названии кнопки. Когда вы вернетесь в ViewControllerA, вы должны восстановить старый заголовок в режиме viewWillAppear ViewControllerA.

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