Я создаю приложение без использования Interface Builder, поэтому я создаю все по коду.Элементы кнопки бара UIToolBar НЕ показаны с Swift
У меня есть контроллер вида, встроенный в контроллер навигации. Я знаю, что у навигационных контроллеров есть свойство панели инструментов, и все, что мне нужно сделать, это установить для boolean значение false, чтобы отобразить его. Мой код выглядит следующим образом (это функция, которая вызывается в viewDidLoad):
func setUpToolBar(){
navigationController?.toolbarHidden = false
navigationController?.toolbar.barTintColor = UIColor.blackColor()
navigationController?.toolbar.tintColor = UIColor.whiteColor()
toolItems.append(addImageButton)
toolItems.append(UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: self, action: nil))
toolItems.append(exportImageButton)
toolItems.append(UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: self, action: nil))
toolItems.append(deleteImageButton)
navigationController?.toolbar.setItems(toolItems, animated: false)
}
Вот где и как я заявляю эти свойства для моего контроллера представления:
private var addImageButton : UIBarButtonItem = {
let button = UIFactory.createBarButtonItem(nil, imageNamed: "plus button", style: .Plain, target: ImagesCollectionViewController.self, selector: #selector(ImagesCollectionViewController.addImage))
return button
}()
private var exportImageButton : UIBarButtonItem = {
let button = UIFactory.createBarButtonItem(nil, imageNamed: "export button", style: .Plain, target: ImagesCollectionViewController.self, selector: #selector(ImagesCollectionViewController.exportImagePressed))
return button
}()
private var deleteImageButton : UIBarButtonItem = {
let button = UIFactory.createBarButtonItem(nil, imageNamed: "trash button", style: .Plain, target: ImagesCollectionViewController.self, selector: #selector(ImagesCollectionViewController.deleteImagePressed))
return button
}()
private var toolItems : [UIBarButtonItem] = []
Вот функция для моего UIFactory класса, который просто обрабатывает хлопоты создания этих UI элементов вне контроллера зрения
class func createBarButtonItem(title: String?, imageNamed : String?, style : UIBarButtonItemStyle?, target : AnyObject?, selector : Selector?) -> UIBarButtonItem{
let button = UIBarButtonItem()
if let theTitle = title {
button.title = theTitle
}
if let theImageName = imageNamed {
button.image = UIImage(named: theImageName)
}
if let theStyle = style{
button.style = theStyle
}
if let theTarget = target {
button.target = theTarget
}
if let theSelector = selector {
button.action = theSelector
}
return button
}
И, после выполнения этого кода в симуляторе, это то, что я не вижу (без элементов панели! Кроме того, обратите внимание, у меня есть элемент кнопки бара в этой панели навигации, которые я добавил в коде просто отлично)
Пожалуйста, кто-то помочь мне. Я застрял на таком бессмысленном шаге, и я не могу продолжить свое приложение без этого.
Где вы звоните setupToolbar? – SArnab
Вызывается в ViewDidLoad – iOShepherd
Это может быть слишком рано. Если 'navigationController?' По-прежнему равен нулю, ваш код не будет иметь никакого эффекта. Это ноль? Если это так, попробуйте перевести вызов на 'setupToolbar' на' viewWillAppear' или где-нибудь подобное. –