Это не хороший шаблон дизайна. Вы должны поместить логику навигации в свои контроллеры представления. Если у вас есть элементы управления (например, кнопки) в вашей пользовательской панели навигации, вы также должны обрабатывать эти события в ваших контроллерах представления.
Обратите внимание, что UINavigationBar
не имеет дело с контроллерами (должно быть наоборот), скорее он имеет дело с UINavigationItem
, которые будут выглядеть по-разному в зависимости от того, находятся ли они на вершине стека навигации. или нет.
Существует трюк , чтобы сделать вашу пользовательскую панель навигации свойством navigationBar
контроллера навигации вашего контроллера представления. Обычно это свойство только для чтения. Но вы можете поместить его в свой контроллер навигации в Интерфейсном Разработчике в XCode, а затем изменить имя класса в инспекторе на свой пользовательский класс . После этого вы сможете обращаться к своей панели с помощью обычного self.navigationController.navigationBar
из контроллера представления.