5

ios için objektif-c olarak bir proje geliştiriyorum ve UITabBarController alt sınıfını kullanarak birden çok sekme görünümü var. Her sekmenin kendi UINavigationController vardır. Görünüm bir sekmede yüklendiğinde, uygun etkinleştirme olayları tetiklenir (viewWillAppear, viewDidLoad, vb.). Ancak, farklı bir sekmeye dokunduğunuzda ve arkaya hafifçe dokunduğunuzda, görünüm zaten söz konusu sekmenin görünebilir görünümü olduğundan (örneğin viewDidLoad) tüm bu olaylar tekrar tetiklenmez.Görünür görünüm değiştiğinde NSNotification veya Delege

Sorum şu: Bu, pencerede görünen görünüm değiştiğinde kaydedilebilecek ve bildirim alabileceğim bir bildirim veya temsilci var mı? Biraz araştırma yaptım ve bunun için özel bir şey bulamadım. Ne yapmayı planladıkları geçerli:

  1. görünür görünümünü kontrol edin sekme çubuğu endeksi değişiklikleri: TabBarController: didSelectViewController
  2. Kayıt her navigasyon kontrolörü bu etkinlik için: NavigationController: didShowViewController: animasyonlu:

Bunu yaparak visibleViewController sekmesini değiştirerek ya da sekmenin gezinme akışında gezinirken (modelde olanlar hariç, bu durumda, umurumda değil. Onlar zaten ele alınmış) her seferinde haberdar edilmelidir.

Bu doğru yaklaşım mı?

cevap

1

UITabBarControllerDelegate'e baktınız mı? İşte

In iOS v3.0 and later, the tab bar controller calls this method regardless 
of whether the selected view controller changed. In addition, it is called only 
in response to user taps in the tab bar and is not called when your code 
changes the tab bar contents programmatically. 

link:: belgelerine

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 

: Bu yöntem aradığınızı sesler http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarControllerDelegate_Protocol/Reference/Reference.html

Umut yardımcı olur!

0

İlk olarak "tabBarController: didSelectViewController" UITabBarController temsilci yöntemini uygulayın ve uygulama temsilcisine kaydedin. Her navigasyon kontrol cihazında kayıt yapamazsınız. Temsilci sadece bir nesne olabilir. Bu yöntemde, bir UINavigationController'a yazın.

Ardından, UINavigationController'da "topViewController" ı arayarak UIViewController'ı edinin. Sonra doğrudan viewWillAppear: yöntemini çağırın.

+0

Teşekkürler. Yakında bir şans vereceğim - kapıdan çıkmak için birkaç kusur daha var. :) –