У меня был родительский контроллер представления с очень длинным заголовком. Это привело к тому, что текст кнопки «назад» превратился в заголовок дочернего контроллера представления.
После того, как я попробовал несколько разных решений, это то, что я закончил (расширяя подход @ john.k.doe):
Использование Xcode 7.2, Swift 2
- В раскадровке добавьте
Navigation Item
к Parent Сцене View Controller (не дочернему VC)
- В
Attributes Inspector
вашего нового Navigation Item
введите символ space
в поле Back Button
. Подробнее об этом позже.
- В контроллере представления Parent добавьте следующий код:
сниппет:
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
заголовками.