У меня есть проект, в котором TableViewCells передается на разные контроллеры представления.В этом проекте я использую пользовательские навигационные контроллеры.Это код контроллера навигации в первом контроллере вида:
//Design of Header
let nav_background = UIImage(named: "header_background")
navigationController?.navigationBar.setBackgroundImage(nav_background, for: .default)
navigationController?.navigationBar.layer.shadowOffset = CGSize(width: 0, height: 1)
navigationController?.navigationBar.layer.shadowOpacity = 0.16
navigationController?.navigationBar.layer.shadowRadius = 10
let account = UIImage(named: "header_account")
let imageView = UIImageView(image: account)
let blankView = UIImageView()
imageView.contentMode = .scaleAspectFit
imageView.layer.shadowOffset = CGSize(width: -3, height: 3)
imageView.layer.shadowOpacity = 0.16
imageView.layer.shadowRadius = 10
self.navigationController?.navigationBar.topItem?.rightBarButtonItem?.customView = imageView
self.navigationController?.navigationBar.topItem?.leftBarButtonItem?.customView = blankView
Первый контроллер вида отображает только пользовательский фон и никаких других свойств.
Это код контроллера второго представления, который загружается при выборе ячейки в TableView:
//Design of Header
let account = UIImage(named: "header_account")
let accountView = UIImageView(image: account)
let back = UIImage(named: "header_backarrow")
let backView = UIImageView(image: back)
navigationItem.leftBarButtonItem?.customView = backView
navigationItem.rightBarButtonItem?.customView = accountView
Теоретически все должно быть заменено написанным здесь кодом и заголовкамиперечисленные в свойствах View Controller (Это работает для всех контроллеров представления, кроме первого.) Я все это беру прямо с веб-страницы Apple: https://developer.apple.com/documentation/uikit/uinavigationcontroller
Вот точные абзацы, на которые я ссылаюсь:
Левый элемент:
Если в новом контроллере представления верхнего уровня есть элемент пользовательской кнопки левой панели, этот элемент отображается.Чтобы указать пользовательский элемент кнопки левой панели, задайте свойство leftBarButtonItem элемента навигации контроллера представления.
Средний элемент:
Если пользовательский вид заголовка не установлен, тоПанель навигации отображает метку, содержащую заголовок контроллера по умолчанию.Строка для этой метки обычно получается из свойства title самого контроллера представления.Если вы хотите отобразить заголовок, отличный от заголовка, связанного с контроллером представления, установите вместо него свойство title элемента навигации контроллера просмотра.
Right Item:
Если новый контроллер представления верхнего уровня имеет настраиваемый элемент кнопки правой панели, этот элемент отображается.Чтобы указать пользовательский элемент кнопки правой панели, установите свойство rightBarButtonItem элемента навигации контроллера представления.
Кто-нибудь знает, как это исправить?Спасибо.