2016-06-16 10 views
0

Ich habe Navigationscontroller mit einem rootViewController namens "LoginController". Wenn ich versuche, rightBarButtonItem von der Init von LoginController hinzuzufügen, so funktioniert es, aber direkt im Navigationscontroller funktioniert die gleiche Operation nicht.BarButtonItem direkt vom Navigationscontroller setzen

Dies funktioniert:

class LoginController: UIViewController { 

    init(){ 
     super.init(nibName: nil, bundle: nil) 

     let button = UIBarButtonItem() 
     button.title = "Test2" 
     navigationItem.rightBarButtonItem = button   
    } 

    ...... 

} 

Dies funktioniert nicht:

class MainNavigationController : UINavigationController{ 

    private var _distributionProvider : DistributionProvider! 

    init(rootViewController: UIViewController, distributionProvider : DistributionProvider) { 
     _distributionProvider = distributionProvider 
     super.init(rootViewController: rootViewController) 

     navigationBar.barTintColor = UIColor(red: 90/255, green: 177/255, blue: 225/255, alpha: 1) 

     let button = UIBarButtonItem() 
     button.title = "Test" 
     navigationItem.rightBarButtonItem = button 


    } 


    .... 
} 

Wo ist Problem? Dank

+0

Warum Sie die init() Funktion verwenden? – Dershowitz123

+0

Ich versuchte ViewDidLoad() etc ... und das gleiche Problem :( – JaSHin

+1

Sie müssen wissen, dass 'UINavigationController' ist ein Manager für 'viewControllers' es haben und jedes ViewController NavigationElement –

Antwort

0

Sie haben, dies zu tun:

class MainNavigationController: UITabBarController, UITabBarControllerDelegate{ 
override func viewDidLoad() { 
     super.viewDidLoad() 
     delegate = self 
    } 

    override func viewWillAppear(animated: Bool) { 
     let item1 = Item1ViewController() 
     let icon1 = UITabBarItem(title: "Title", image: UIImage(named: "someImage.png"), selectedImage: UIImage(named: "otherImage.png")) 
     item1.tabBarItem = icon1 
     let controllers = [item1] //array of the root view controllers displayed by the tab bar interface 
     self.viewControllers = controllers 
    } 

    //Delegate methods 
    func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool { 
     print("Should select viewController: \(viewController.title) ?") 
     return true; 
    } 

} 
Verwandte Themen