1
Ben bazı UINavigationController ilk seviyeye dönen kodu, ancak aşağıda Hiçbir iş tetiklemek için çeşitli yöntemler çalışıyorum

...Gezinme denetleyicisi hiyerarşisine geri giderken viewWillAppear nasıl tetiklenir?

// HomeViewController.m 
-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    NSLog(@"trigger 1"); 
} 

- (void)viewWillAppear:(BOOL)animated { 
    NSLog(@"trigger 2"); 
} 

-(void) viewDidAppear:(BOOL)animated { 
    NSLog(@"trigger 3"); 
} 

ben kurdum düşünmeye başladım benim app yanlış .. UIViewControllers UIViewControllers sahip hakkında bir şey mi?

Bu uygulama nibidir .. her sekme için bir gezinme denetleyicisine sahip olan bir UITabBarController ve UINavigationController'ın ilk sayfasında. Bu kurulum, yöntemlerin tetiklenmesinin nedeni mi? Bu gösterilmez

alt text

Dosya Sahibinin görünümlerinize bağlı altındaki UIView olduğunu. Ve daha karmaşık hale getirmek için, MainViewController aslında bir Utility tarzı uygulamanın flip tarafında.

cevap

0

Bunu başka bir şekilde çözdüğümü söylemek için. ViewWillAppear gibi bir şey çağırmam gerekiyordu çünkü ikinci görüşümde bir şey değiştiğinde ilk görüşüm tablosumu güncellemem gerekiyordu.

Ben, benim 'tableView: commitEditingStyle' in oldu elde yönlü yöntemiyle, ben sonunda bu koyun (Ben bir şey sildikten sonra adlandırılır) ..

[[[[self.navigationController.tabBarController.viewControllers objectAtIndex:0] viewControllers] objectAtIndex:0] reloadTheTable]; 

reloadTheTable benim HomeViewController bir yöntem olan güncelleme dizileri ve [tableView reloadData] gibi şeyler yapar vb;

Çok sayıda parantez var. Eminim ucum bunu daha basit hale getirmek için kurulabilir. Sanırım Kasparov dört hamle ileride olduğunu düşündüğünü söyledi ... ve dört parantez limitim. Ben aradığımı bulana kadar buna ekleyerek yavaşça

NSString *name = NSStringFromClass ([[self parentViewController] class]); 
NSLog(@"%@", name); // outputs UINavigationController 

ve:

böyle şeyler yaparak çalıştı

name = NSStringFromClass ([[[[self.navigationController.tabBarController.viewControllers objectAtIndex:0] viewControllers] objectAtIndex:0] class]); //UINavigationController 
NSLog(@"%@", name); // outputs HomeViewController 

kesinlikle garip bir şey yolunda var Görünümler görünümleri koyarken viewWillAppear iptal edilir.

+0

Bunu ne zaman çektiniz? Mevcut görüntü denetleyicisini açmadan önce? –

İlgili konular