2009-04-29 15 views
8

Bu aptalca bir soru olabilir, ancak bir UIBarButtonItem bir UINavigationController tarafından yönetilen birden çok görünümde doğru tutmak mümkün mü? UIBarButtonItem'un aynı haklarını paylaşan bir görünümler aşamasına sahibim, ancak UINavigationController'a yeni bir görünüm eklediğimde, değiştirilmese bile düğmeyi her seferinde yeniden tanımlamak zorundayım. Çoğunlukla, bir görüşten diğerine fark edilebilir geçiş animasyonu, neyin beni rahatsız edeceğidir, çünkü aynı düğme, kısa bir süre sonra geri döner, çünkü bu, gerçek bir görsel değişim olmadığı için gereksizdir. UIButton'u UINavigationBar'un bir alt görünümü olarak eklemeyi ve bir "sağ çubuk düğmesi" efekti elde etmeyi düşünmem gerekir mi?Kalıcı rightBarButtonItem Özelliği UINavigationItem

cevap

14

Bunu bizim uygulamamızla gerçekleştirdik. Tek bir UIBarButtonItem ürettik, bir UIViewController'dan diğerine kullanıcı gezinirken diğerine geçtik. Bu hile UINavigationControllerDelegate, navigationController: willShowViewController: animated: method kullanmaktı. Giden UIViewController'ın sağdakiBarButtonItem öğesini sıfırlamak ve gelen denetleyicinin düğmenizdeki rightBarButtonItemini ayarladık. Yönetmesi gereken bir acı ama işe yarıyor.

+0

Awesome! Teşekkür ederim. UINavigationControllerDelegate'i araştırmayı unuttum. – LucasTizma

+0

Teşekkür ederiz! Benim için çalıştı! :) –

+0

Hey, giden UIView kontrol cihazını nasıl alabilirim? Öyle görünüyor ki sunulacak olanı alabiliyorum, ama şimdiki olanı değil? alkışlar – zanona

1

UIBarButtonItems, bir nib/xib dosyasında bağımsız örnekler olarak oluşturulabilir. Arayüz oluşturucuda düğmeyi oluşturabilmenizi engelleyen özel bir şey yoksa, düğmeyi yeniden kullanması gereken her görünüm denetleyicisi için UINavigationItem öğesinin rightBarButtonItem özelliğine bağlamanız gerekir. Hedefe ihtiyaç yok.

+0

Merhaba Matt, Örnekle daha spesifik olabilir misiniz - Örnek kodda NavBar.xcode uygulamasının bu olduğuna inanıyorum, ancak bu yolu takip ederek bazı sıkıntılar yaşıyorum. (BTW - Cevabınız için hem doğru hem de daha zarif bir çözüm olduğunu düşündüğüm için oy kullandım.) – mobibob