我在不使用 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
}
并且,在模拟器中运行此代码后,这就是我所看到的(没有工具栏项!另外,请注意我在该导航栏中有一个栏按钮项,我在代码中添加的很好)
拜托,有人帮助我。我被困在这样一个荒谬的步骤上,没有这个我就无法继续我的应用程序。
最佳答案
只是删除
navigationController?.toolbar.setItems(toolItems, animated: false)
然后放上这行代码
self.toolbarItems = [toolItems]
关于ios - UIToolBar 栏按钮项目不使用 Swift 显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38164670/