UIToolBar栏按钮项目不显示Swift

iOS*_*erd 2 xcode uitoolbar uibarbuttonitem ios swift

我正在制作一个不使用Interface Builder的应用程序,所以我正在通过代码创建所有内容.

我有一个嵌入在导航控制器中的视图控制器.我知道导航控制器有一个工具栏属性,我需要做的就是将布尔值设置为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)

}
Run Code Online (Sandbox Code Playgroud)

以下是我为视图控制器声明这些属性的位置和方式:

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] = []
Run Code Online (Sandbox Code Playgroud)

这是我的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
}
Run Code Online (Sandbox Code Playgroud)

而且,运行在模拟器此代码后,这是我所看到的(没有工具栏项目!另外,请注意我在导航栏上,这是我在代码中添加就好了一个栏按钮项)

截图

请有人帮助我.我陷入了这样一个荒谬的步骤,如果没有这个,我无法继续我的应用程序.

Ahm*_*lab 7

只需删除

navigationController?.toolbar.setItems(toolItems, animated: false)
Run Code Online (Sandbox Code Playgroud)

并把这行代码

self.toolbarItems = [toolItems]
Run Code Online (Sandbox Code Playgroud)