Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIToolBar按钮项目未使用Swift显示_Ios_Xcode_Swift_Uibarbuttonitem_Uitoolbar - Fatal编程技术网

Ios UIToolBar按钮项目未使用Swift显示

Ios UIToolBar按钮项目未使用Swift显示,ios,xcode,swift,uibarbuttonitem,uitoolbar,Ios,Xcode,Swift,Uibarbuttonitem,Uitoolbar,我没有使用Interface Builder制作一个应用程序,所以我用代码创建所有东西 我有一个嵌入在导航控制器中的视图控制器。我知道导航控制器有一个工具栏属性,我需要做的就是将布尔值设置为false以取消隐藏它。我的代码如下所示(它是在viewDidLoad中调用的函数): 以下是我为视图控制器声明这些属性的位置和方式: private var addImageButton : UIBarButtonItem = { let button = UIFactory.createBarBu

我没有使用Interface Builder制作一个应用程序,所以我用代码创建所有东西

我有一个嵌入在导航控制器中的视图控制器。我知道导航控制器有一个工具栏属性,我需要做的就是将布尔值设置为false以取消隐藏它。我的代码如下所示(它是在viewDidLoad中调用的函数):

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

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] = []
下面是my 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
}
在模拟器中运行此代码后,我看到的是(没有工具栏项目!另外,请注意,导航栏中有一个bar button项目,我在代码中添加的很好)

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

只需删除

navigationController?.toolbar.setItems(toolItems, animated: false)
然后把这行代码

self.toolbarItems = [toolItems]
我变了

导航控制器!。toolbar.setItems(toolItems,动画:true)

toolbarItems=工具项


为我工作。

你在哪里调用setupToolbar?在ViewDidLoad中调用这可能太早了。如果
navigationController?
仍然为零,那么您的代码将不会有任何效果。是零吗?如果是这样,请尝试将调用移动到
setupToolbar
viewwillbeen
或类似位置。难以置信。成功了。谢谢toolItems需要初始化吗?这对我很有用,我想知道为什么“self.navigationController?.toolbar.items=items”和“self.navigationController?.setToolbarItems(items,动画:false)”不起作用
self.toolbarItems = [toolItems]