Ich mache eine App, ohne den Interface Builder zu verwenden, also erstelle ich alles nach Code.UIToolBar-Leiste Schaltflächenelemente werden nicht mit Swift angezeigt
Ich habe einen View-Controller, der in einem Navigationscontroller eingebettet ist. Ich weiß, dass Navigationssteuerungen eine Symbolleisteneigenschaft haben, und alles, was ich tun muss, ist, den Booleschen Wert auf "Falsch" zu setzen, um ihn anzuzeigen. Mein Code sieht wie folgt aus (es eine Funktion in viewDidLoad genannt ist):
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)
}
Hier ist, wo und wie ich diese Eigenschaften für meine View-Controller bin erklärt:
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] = []
Hier ist die Funktion für meine UIFactory Klasse, die einfach den Aufwand behandelt, diese UI Elemente außerhalb des view-Controllers zu schaffen
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
}
Und nach diesem Code im Simulator ausgeführt wird, das ist, was ich sehe (keine Elemente der Symbolleiste! Außerdem bemerke ich ein Bar-Taste Element in dieser Navigationsleiste, die ich in Code hinzugefügt just fine)
Bitte, jemand mir helfen. Ich stecke auf einem so unsinnigen Schritt fest und kann ohne meine App nicht weitermachen.
Wo rufst du setupToolbar an? – SArnab
Aufruf in ViewDidLoad – iOShepherd
Das ist vielleicht zu früh. Wenn 'navigationController?' Immer noch null ist, hat Ihr Code keine Auswirkungen. Ist es Null? Wenn ja, versuchen Sie den Aufruf von 'setupToolbar' nach' viewWillAppear' oder an einen ähnlichen Ort zu verschieben. –