2016-04-13 37 views
0

Projedeki hemen her görünümde bir gezinme çubuğu düğmesi öğesi görüntülemem gerekiyor. Belirli bir denetleyici işleviyle her görünümde çubuk düğmesi öğesi

Ben

extension UIViewController{ 
    func addNavBarItem(){ 
     //add the bar button item 
    } 
} 

UIViewController genişletilmiş Ve viewDidLoad üzerinde addNavBarItem() diyoruz. Bununla birlikte, bu düğmeye dokunulduğunda gerçekleştirilen eylem, her görünüm için farklı olabilir. Bu düğme için hedefi bu yöntem olarak adlandırılan gerçek görünüm denetleyicisine ayarlamak için bir yolu var mı? İdeal

extension UIViewController{ 
    func addNavBarItem(){ 
     //do stuff 
     btn.addTarget(self, action: #selector(OriginalViewController.doSomething), forControlEvents: .TouchUpInside) 
    } 
} 

Ama OriginalViewController kullanılamaz .... gibi bir şey istemez. Çalışması gereken hızlı bir çözüm veya alternatif bir model var mı? Kullandığım

+0

'UINavigationController' kullanıyor musunuz? – Wez

+1

Evet 'UINavigationController' kullanıyorum. Bunu deneyeceğim. – prawn

+0

Yorumumu yanıt olarak ekledim. – Wez

cevap

0

bir çözüm Bu hedefi eklerken tam referans anlamına gelir

class MyNavigationController : UINavigationController { 

    override func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) { 
     super.navigationController(navigationController, willShowViewController: viewController, animated: animated) 
     let backButton = UIBarButtonItem(image: UIImage(named: "ic_menu"), style: UIBarButtonItemStyle.Plain, target: viewController, action: "doSomething") 
     viewController.navigationItem.leftBarButtonItem = backButton 
    } 

} 

... UINavigationController alt sınıf ve şöyle willShowViewController temsilci yöntemine benim gezinti çubuğu öğesi kodunu koymaktır Gezinme denetleyicisi tarafından gösterilen viewController.