Я не уверен, почему этот фрагмент кода, который должен вставлять два элемента кнопки на панели инструментов навигационного контроллера, не будет работать. Сама панель инструментов отображается, когда я запускаю свой код, но не элементы панели. Что я здесь делаю неправильно? Спасибо за внимание.UIBarButtonItems, созданный программно с Swift, не отображается
class NavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
//Tool bar appearance
toolbar.barTintColor = UIColor.blackColor()
//Show tool bar by default
self.navigationController?.toolbarHidden = false
//Icons all located in images.xcassets
let homeImage = UIImage(named: "home")
let gameImage = UIImage(named: "logo")
var toolBarItems = [UIBarButtonItem]()
let homeButton = UIBarButtonItem(image: homeImage, style: UIBarButtonItemStyle.Plain, target: self, action: #selector(NavigationController.toHome))
homeButton.title = "Home"
let gameButton = UIBarButtonItem(image: gameImage, style: UIBarButtonItemStyle.Plain, target: self, action: #selector(NavigationController.toGame))
homeButton.title = "Game"
//Place the bar items in toolBarItems array
toolBarItems.append(homeButton)
toolBarItems.append(gameButton)
//self.toolbar.items = toolBarItems
self.toolbar.setItems(toolBarItems, animated: true)
}//End viewDidLoad
func toHome() {
let homeVC = HomeViewController(nibName: "HomeViewController", bundle: nil)
self.pushViewController(homeVC, animated: true)
}
func toGame() {
let gameVC = GameViewController(nibName: "GameViewController", bundle: nil)
self.pushViewController(gameVC, animated: true)
}
}
Класс - это действительно один контроллер навигации, от которого зависят все остальные контроллеры. Из того, что я понимаю о контроллерах навигации, у них есть встроенная панель навигации и панель инструментов, в которые могут быть встроены элементы панели. То, что я пытаюсь сделать, - это вставить штриховые кнопки на панель инструментов, которая принадлежит этому навигационному контроллеру, что должно в конечном счете быть видимым для всех контроллеров представления, которые являются дочерними элементами навигационного контроллера. –
Теперь я понимаю, почему это должно быть просто toolbarHidden = false Я исправил эту строку, но все же теперь меняю ее. Панель инструментов остается видимой, но кнопки на панели не отображаются –
Обычно я предлагаю раскадровку делать все это. В этих случаях он автоматически определяет rootVieController. У тебя есть один? Определено в раскадровке или программно? Скорее всего, что NavigationController представляет и компоновал все только с этим корневым контроллером. – jboi