У меня был родительский контроллер представления с очень длинным заголовком. Это привело к тому, что текст кнопки «назад» превратился в заголовок дочернего контроллера представления.
После того, как я попробовал несколько разных решений, это то, что я в итоге сделал (расширяя подход @ john.k.doe):
Используя Xcode 7.2, Swift 2
- В раскадровке добавьте объект
Navigation Item
в сцену родительского представления (не дочерний виртуальный канал).
- На
Attributes Inspector
вашем новом Navigation Item
, введите space
символ в Back Button
поле. Подробнее об этом позже.
- В родительском контроллере представления, добавьте следующий код:
фрагмент кода:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
switch segue.destinationViewController {
case is ChildViewController:
navigationItem.backBarButtonItem?.title = ""
default:
navigationItem.backBarButtonItem?.title = "Full Parent Title"
}
}
Объяснение:
Кнопка «Назад» относится к родительскому контроллеру представления. Он Navigation Item
дает вам указатель на кнопку «Назад», поэтому вы можете установить заголовок в коде или в раскадровке.
Примечание:
Если оставить Navigation Item
Back Button
текст в качестве пустой строки по умолчанию, заголовок кнопки «Назад» станет «Назад».
Другие подходы работают, зачем использовать этот?
Несмотря на то, что на дочернем контроллере представления можно переопределить заголовок кнопки «назад», было трудно получить ручку до тех пор, пока она не вспыхнула на экране.
Некоторые из подходов создают новую кнопку возврата и переопределяют существующую. Я уверен, что это работает, и, вероятно, необходимо в некоторых случаях использования. Но я предпочитаю использовать существующие API, когда это возможно.
Смена title
родительского контроллера представления - самое быстрое решение для некоторых ситуаций. Однако это меняет родительский заголовок, поэтому вам нужно управлять состоянием. Вещи также становятся беспорядочными, Tab Bar Controller
потому что изменения названия вызывают побочные эффекты с Tab Bar Item
названиями.