ios - UIToolBar 栏按钮项目不使用 Swift 显示

标签 ios xcode swift uibarbuttonitem uitoolbar

我在不使用 Interface Builder 的情况下制作应用程序,所以我通过代码创建所有内容。

我有一个嵌入在导航 Controller 中的 View Controller 。我知道导航 Controller 有一个工具栏属性,我需要做的就是将 bool 值设置为 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)

}

这是我在何处以及如何为我的 View Controller 声明这些属性:

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 类的函数,它简单地处理了在 View Controller 之外创建这些 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
}

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

screenshot

拜托,有人帮助我。我被困在这样一个荒谬的步骤上,没有这个我就无法继续我的应用程序。

最佳答案

只是删除

navigationController?.toolbar.setItems(toolItems, animated: false)

然后放上这行代码

self.toolbarItems = [toolItems]

关于ios - UIToolBar 栏按钮项目不使用 Swift 显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38164670/

相关文章:

ios - Cloud Kit 在 Swift 2.0 中的 performQuery

iOS 15 : Enabling "Configure in App" option for notifications

ios - NSFetchedResultsController - 反转 NSIndexPath 与乘法部分和分页

ios - 如何使用firebase实时数据库ios增加特定节点中的值

ios - URLSessionDataTask没有成员 'map' Swift 5

ios - Xcode 7 中的左约束

swift - Xcode 7.2.1 Swift 2 - 更新到 Xcode 7.3

iOS 钥匙串(keychain) - 带有 iOS 9.2 beta 3 的 errSecItemNotFound

ios - 使用音频单元播放多个重叠的短音频文件

ios - 发布到应用商店所需的最低iOS SDK?