2011-02-15 22 views
34

Gezinme çubuğunun RHS'sindeki iki düğme arasında geçiş yapmak için kodumda -(void)setEditing:(BOOL)editing animated:(BOOL)animated yöntemini arıyorum.UINavigationBar'da düğme değişikliği nasıl yapılır?

-(void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 

    // Toggle ‘+’ and ‘Add To Order’ button.  

    if(editing) { 
    self.navigationItem.rightBarButtonItem = self.addItemButton; 
    } 
    else {   
    self.navigationItem.rightBarButtonItem = self.addToOrderButton; 
    } 
} 

Nerede self.addItemButton ve self.addToOrderButtonawakefromNib önceden tanımlanmış UIBarButtonItems, kurulum içeren Ivars vardır.

self.addToOrderButton düğme self.addItemButton içinde bir daha sonra önemli ölçüde daha geniş olan, bu yüzden düzenleme durumundaki değişikliği tetiklendiğinde I lhs editButtonItem standart dokunarak (iki genişlikleri arasında ince bir animasyon olduğu onların istiyorum navigasyon.

Ben düğme değişikliği, ancak onların yerine daha üst sol ziyade tek tek yerine pozisyonları uçan ve sadece kendi genişlikleri animasyon ile animasyon yok [UIView beginAnimations:nil context:NULL]; ve [UIView commitAnimations]; ile tüm if:else içine alırsanız.

Gezinme çubuğu öğesini nasıl canlandırırım? Böylece her bir kişi (RHS düğmesi, başlık) daha uygun, kısıtlanmış yollarda canlandırabilir mi?

[self.navigationItem setRightBarButtonItem: self.addToOrderButton animated:YES]; 

... sizin için Canlandıracağımız:

cevap

67
self.navigationItem.rightBarButtonItem = self.addToOrderButton; 

Eğer sağ ve sol çubuk düğme öğeleri hareketlendirmek için kullanabileceğiniz belirli yöntemler vardır. Animasyon yapmak için her şeye ihtiyacınız varsa (başlık dahil), gezinme çubuğunuzun setItems:animated: yöntemini de kullanabilirsiniz (görüntülemek istediğiniz gezinme öğelerinin bir dizisine iletin)

+0

Yanıtı kabul ettim, tam olarak açıkladığınız şeyi yapar ve iyi çalışır. Çok teşekkürler. Bir kenara, gerçekleşen gerçek animasyonu düzeltmek için bir yöntem var mı? Burada sunulduğu gibi, bu bir çapraz solma - ki bu iyi bir şeydir - ancak metin için çapraz solgunluk ve ‘karesi için LHS düğmesinin hareketli hareketi daha da iyi olacaktır. – creednmd

+1

SDK'da doğrudan bir yöntem yok, no. Muhtemelen bir şeyleri kendiniz uygulayabilirsiniz, ama önemsiz olacaktır (bir yöntemle yöntemi geçersiz kılmak ve bunu kendi geçişinizle değiştirmek gibi). – lxt

+0

Dokümanları incelemeye ihtiyaç duyacağım bir şeye benziyor; Beni doğru yolda aldığın için teşekkürler. – creednmd