2015-01-05 20 views
5

ortak Bar Düğme birimini açmak, bu Navigasyon Kontrolörü tarafından yönetilen tüm ekranlarda ekran olmalı ve aynı eylemi çağırır.Ben Navigasyon Bar sağında ortak Bar Düğme Öğe ayarlamak istediğiniz Nasıl Navigasyon Bar

Örneğin, örneğin Ana Detay Uygulaması şablonunda, Gezinme Çubuğunun sağ tarafında "addButton" var, ben de onu DetailViewController'da görüntülemek istiyorum (bu işlem işe yaramadığı için işe yaramayacaktır).

ben Gezinme Çubuğu rengi gibi bir şey değiştirebileceğiniz UINavigationController bir alt sınıfı oluşturduk ama Bar Düğme Ürünleri belirleyemezsiniz. Her ekranın ViewController'ına Bar Düğme Öğelerini ayarlayabilirim, böylece her ekran için eylemi çoğaltmalıyım.

Ayrıca ben UINavigationBar bir alt sınıfını oluşturmak için denedim, ama üzerinde Bar Düğme Öğe ekleyebiliyorsanız bilmiyorum.

Nasıl gezinti çubuğunu ortak Bar Düğme birimini açmak?

Şimdiden teşekkürler.

+0

neden UIViewController sizin önceden ayarlanmış barbuttonitems olması alt sınıf olamaz kök görünümü denetleyicisi UINavigationControllerDelegate uygulamak bir uzantı

oluşturarak ve ardından her yerde alt sınıfını kullanmak için başka kolay yolu ? – rakeshbs

+0

Yorumunuz için teşekkürler. Çünkü sadece UIViewControllers değil, aynı zamanda UITableViewControllers vardır. O zaman UIViewController ve UITableViewController alt sınıflarını mı oluşturmalıyım? Bunun, ortak Bar Düğme Öğesi için iyi bir uygulama olup olmadığını bilmiyorum. – 5t111111

+0

Bu daha kolay bir çözüm gibi görünüyor. Sadece iki özel sınıf oluşturmanız yeterli mi? – rakeshbs

cevap

4

Bunu yaklaşım kategorisini kullanabilirsiniz. en UIViewController+NavigationBar kategorisi

1.Create bir kategori

diyelim 2.Add bir yöntem -(void)setNavigationBarItem (bu durumda) yöntemi .h dosyada.

3.implement .m dosyada yöntem grubu Bar Düğme Öğeler şeylerle uğraşmak. viewController Eğer NavigationBarItem istediğiniz

- (void)setNavigationBarItem 
{ 
    UIBarButtonItem *searchItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(something)]; 
    self.navigationItem.rightBarButtonItem = searchItem; 
} 

4.In, kategori başlığını ithalat ve [self setNavigationBarItem] yöntemini çağırın.

+0

Peki, neden aşağı oy? –

+0

Hmm Ayrıca neden aşağı oyu bilmiyorum. Yukarıdaki yorumda bahsedilen kategoriyi kullanan örnek bir uygulama gibi görünüyor. Yine de bu kodu denemedim. – 5t111111

+0

Teşekkürler, çalışıp denediğimi doğruladım. – 5t111111

4

yapmak yerine

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) { 
    let backBarButton = UIBarButtonItem.init(title: "HINIBO", style: .Plain, target: self, action: Selector("menuButtonAction:")) 
    viewController.navigationItem.rightBarButtonItem = backBarButton 
} 
İlgili konular