2016-05-04 17 views
0

Ich bin sicher, dass ich dieses Muster vor verwendet habe, ist aber etwas, das mein verhindert das Hinzufügen UIBarButtonItems meinen subclassed UINavigationControllerTasten UINavigationItem Hinzufügen funktioniert nicht bei allen

// AppDelegate 
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    window = UIWindow(frame: UIScreen.mainScreen().bounds); 
    let plainVC = UIViewController(); 
    plainVC.title = "Plain"; 
    let explorerNav = ExplorerNavController(rootViewController: plainVC); 
    window?.rootViewController = explorerNav; 
    window?.makeKeyAndVisible(); 
    return true 
} 

//ExplorerNavController 
class ExplorerNavController: UINavigationController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Dumb", style: .Done, target: self, action: #selector(openSettings)); 
     self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(openSettings)); 
    } 

    func openSettings(){ 
     print("did tap open settings"); 
    } 
} 

Welche läßt mich einfach mit: enter image description here

ich habe auch versucht, meine Ansicht Controller Navigationspunkt Einstellung, die Elemente in viewDidAppear statt viewDidLoad Einstellung. Ich kann die Navigationsleiste von der gleichen viewDidLoad stylen, während ich die Navigationselemente einstelle, was beweist, dass tatsächlich eine Instanz von ExplorerNavController erstellt wird. Ich bin nur nicht sicher, was ich vermisse.

+1

ich denke, es funktioniert nur, wenn Sie mit der rechten und der linken Leistenschaltflächen für RootViewController eingestellt werden, wie es entworfen wurde, um diese Tasten pro Bildschirm pro Navigation nicht angezeigt werden soll. – azimov

Antwort

0

Verwendung:

let leftBarButtonItem = UIBarButtonItem(title: "Dumb", style: .Done, target: self, action: #selector(openSettings)) 
nav.navigationItem.setLeftBarButtonItem(leftBarButtonItem, animated: true) 
Verwandte Themen