2016-06-16 4 views
0

У меня есть контроллер навигации с одним корневым контроллером, называемым LoginController. Когда я пытаюсь добавить rightBarButtonItem из init LoginController, поэтому он работает, но непосредственно в контроллере навигации такая же работа не работает.Установить BarButtonItem непосредственно с контроллера навигации

Это работает:

class LoginController: UIViewController { 

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

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

    ...... 

} 

Это не работает:

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 


    } 


    .... 
} 

Где проблема? Благодаря

+0

Почему вы используете функцию Init()? – Dershowitz123

+0

Я попробовал viewDidLoad() и т. Д. ... и ту же проблему :( – JaSHin

+1

вам нужно знать, что 'UINavigationController' является менеджером для' viewControllers', который он имеет и показывает каждую навигацию viewcontroller. –

ответ

0

Вы имеете, чтобы сделать это:

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; 
    } 

} 
Смежные вопросы