Iphone 返回导航控制器层次结构时,如何触发ViewWillDisplay?

Iphone 返回导航控制器层次结构时,如何触发ViewWillDisplay?,iphone,objective-c,ios,uinavigationcontroller,viewwillappear,Iphone,Objective C,Ios,Uinavigationcontroller,Viewwillappear,我一直在尝试各种方法在返回到UINavigationController的第一级时触发一些代码,但是下面的工作都没有 // HomeViewController.m -(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated { NSLog

我一直在尝试各种方法在返回到UINavigationController的第一级时触发一些代码,但是下面的工作都没有

// 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");
}
我开始觉得我的应用程序设置错了。。是关于在UIViewControllers中包含UIViewControllers吗

这是应用程序的笔尖。。它是一个UIDABBARC控制器,每个选项卡都有一个导航控制器,位于UINavigationController的第一页。此设置是否是方法未触发的原因


图中未显示底部链接到文件所有者视图的UIView。更复杂的是,MainViewController实际上是实用程序风格应用程序的另一面。

我用另一种方法解决了这个问题。我需要调用viewWillAppear之类的函数,因为当第二个视图中发生更改时,我需要更新第一个视图表

我实现它的方式是,在我的“tableView:CommittedItingStyle”方法(在我删除某些内容后调用)中,我将其放在末尾

[[[[self.navigationController.tabBarController.viewControllers objectAtIndex:0] viewControllers] objectAtIndex:0] reloadTheTable];
reloadTheTable是my HomeViewController中的一种方法,它可以更新数组和[tableView reloadData]等

那有很多括号。我相信我的笔尖可以设置得更简单。我想卡斯帕罗夫已经说过他认为有四步要走。。。四个括号是我的极限

我是这样做的:

NSString *name = NSStringFromClass ([[self parentViewController] class]);
NSLog(@"%@", name); // outputs UINavigationController
然后慢慢地添加,直到我找到了我想要的:

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

当您在视图中放置视图时,视图的显示方式肯定有些奇怪,但会被取消。

您何时调用此功能的?在弹出现有视图控制器之前?