2012-05-10 20 views
9

Senaryo alın:iPhone'da güzel animasyon ile, UINavigationBar temsilci "geri" izin vermek

kullanıcı geri düğmesine musluklar, (UINavigationController bir alt sınıfta uygulanan) UINavigationBar temsilci yöntemi bu gibi YES döndürür:

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item 
{ 
    // Verify stuff... 

    return YES; 
} 

Şimdi docs göre, nav bar ve senkronize içeriğini ve bunu yapmak için bir yer tutmak için uygulamanın sorumluluğu temsilci yönteminde mi

- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item 

Sorun, didPopItem yalnızca nav çubuğunun pop animasyon dizisi bittikten sonra çağrılır, bu yüzden orada [self popViewControllerAnimated: NO]'u çağırırsam net sonuç, önce nav çubuğu geri, daha sonra içeri kaydırır.

Ve bu sadece yanlış görünüyor.

Gezinme denetleyicisinin pop... temsilcisini shouldPop... temsilcisine çağırırsam, çakışan animasyonların etkisine bir hata iletisi alıyorum ve son durum temiz değil.

Bu yüzden sorum, UINavigationController'ın içeriğini değiştirmesi için başka bir yol var mı, tercihen nav çubuğuyla senkronize edilmiş güzel bir animasyonla, ama nav çubuğu ve navigasyon denetleyicisi arasında karışıklık yaratmadan?

Hedef işletim sistemi iOS 4.2 ve sonrası.

Geri düğmenin yerine başka bir sol düğme oluşturabileceğimin farkındayım, ancak bir temsilci kullanmak için daha temiz buldum, ayrıca, istediğim şey olan bir "gerçek" geri düğmesi alıyorum.

+0

Y geçerli olup olmadığını

Bilmiyor 3 paragh whihc u ana üssü olduğunu düşünmek –

+1

Neden bir "UINavigationController" ile ayrı bir gezinme çubuğu kullanıyorsunuz yerine kullanan birini kullanıyorsunuz? – Greg

cevap

3

Bir UINavigationController kullanıyorsanız, bunu kendiniz yönetmeniz gerekmez. UINavigationController'ı kullanarak kendinize çok fazla sorun yaşatacaksınız. Gezinme çubuğu öğeleriyle birlikte içerik görünümünü açmaya özen gösterecektir.

1

bu deneyin:

Eğer viewControllerA ve viewControllerB var düşünün. viewControllerA ilk ve bir navigationBar ve viewControllerB gerektirmez. viewControllerA içinde yöntemle viewWillAppear günü

kodu koyun:

[self.navigationController setNavigationBarHidden:YES animated:YES]; 

ve viewControllerB haşhaş zaman animasyon ile yaparlar. Her iki animasyon da otomatik olarak senkronize olacak. Bu u 3 paragrah..What u olun yapabilirsiniz yapmaya wana içinde writter vardı u nav çubuğunun pop animasyon dizisinin önce didPopItem Yöntem aramak istediğiniz iOS4.2 için

İlgili konular