У мене був контролер подання батьків з дійсно довгим заголовком. Це призвело до того, що текст кнопки "назад" перетікає в заголовок дочірнього контролера.
Спробувавши купу різних рішень, це я закінчила (розширивши підхід @ 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
заголовками.