2015-11-15 8 views
15

Ich versuche, eine NavBar zu erstellen, so weit die NavBar ist kein Problem, aber wenn ich versuche, Schaltflächen und den Titel ich werde gesaugt bekommen.Erstellen NavBar programmatisch mit Button und Titel Swift

Mein NavBar aussehen wie

let NameHeight = screenHeight * 0.09 
let NameWidth = screenWidth 
let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: NameWidth, height: NameHeight)) 
self.view.addSubview(navBar) 

so versuche ich mein NavBar Titel zu setzen wie

navigationBar.topItem.title = "some title" 
or 
navigationBar.title = "some title" 

aber beide scheitern.
Auch wenn ich versuche, eine Taste, um

let btnName = UIButton() 
btnName.setImage(UIImage(named: "imagename"), forState: .Normal) 
btnName.frame = CGRectMake(0, 0, 30, 30) 
btnName.addTarget(self, action: Selector("action"), forControlEvents: .TouchUpInside) 

//.... Set Right/Left Bar Button item 
let rightBarButton = UIBarButtonItem() 
rightBarButton.customView = btnName 
self.navigationItem.rightBarButtonItem = rightBarButton 

diese geben mir keinen Fehler, aber der Knopf einfach nicht

Antwort

26

Sie müssen einen Navigationspunkt Instanz erstellen angezeigt und eingestellt Titel und rechts/links-Tasten zu ihm. Nachdem das Navigationselement konfiguriert wurde, fügen Sie es zur Navigationsleiste hinzu.

let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: 320, height: 44)) 
self.view.addSubview(navBar); 
let navItem = UINavigationItem(title: "SomeTitle"); 
let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: nil, action: "selector"); 
navItem.rightBarButtonItem = doneItem; 
navBar.setItems([navItem], animated: false); 
+0

dank arbeiten diese schon :-) aber immer noch das „custom Bild gesetzt“ nicht für mich könnten Sie mir einen Hinweis auf das geben? –

+0

lassen doneItem = UIBarButtonItem (Bild: image1, landscapeImagePhone: nil, style: UIBarButtonItemStyle.Plain, Ziel: null, Aktion: "Action1:") es gelöst hat –

+0

funktioniert nicht für die Stammansicht –

14

Grundsätzlich Azimov Antwort in Swift 4

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.setNavigationBar() 
} 

func setNavigationBar() { 
    let screenSize: CGRect = UIScreen.main.bounds 
    let navBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: screenSize.width, height: 44)) 
    let navItem = UINavigationItem(title: "") 
    let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: nil, action: #selector(done)) 
    navItem.rightBarButtonItem = doneItem 
    navBar.setItems([navItem], animated: false) 
    self.view.addSubview(navBar) 
} 

@objc func done() { // remove @objc for Swift 3 

} 
Verwandte Themen