tabBarController和第一个Tab viewDidLoad

时间:2011-07-21 17:49:28

标签: objective-c ios xcode uitabbarcontroller

我创建了一个tabBarNavigated应用程序。在第二个标签中,我做了一些正常的工作,但现在我想在第一个Tab中做一些事情,所以首先我尝试NSLog一个字符串,但我没有反应。

- (void)viewDidLoad
{
 NSLog(@"Test");
}

如果我在视图中添加标签,它将会显示,但对我的代码没有反应。

如果我启动我的应用程序,我会看到此视图,但我无法调用此方法中的任何操作,即使我更改了标签,然后返回第一个,仍然没有日志。

enter image description here

我尝试在GehaltView中使用NSlog

这是mainWindow

enter image description here

viewWillAppear不起作用:(

2 个答案:

答案 0 :(得分:3)

仅在加载视图时调用-viewDidLoad方法。除非视图被卸载,否则此方法将不会再次调用,在这种情况下将调用-viewDidUnload。如果存在内存问题,可以卸载视图,但是否则它们通常会存在。

如果要触发每次出现视图时发生的操作,则可以使用-viewWillAppear:方法。每次重新显示视图时都会调用此方法。您可以使用-viewWillDisappear跟踪视图何时消失,并在两个标签之间切换时观察两个被调用。

另请注意,-viewDidLoad可能会在视图显示之前被调用,但-viewWillAppear仅在视图实际显示时(或之前的某个时间,如will所示)被调用。

编辑:代码应该是

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSLog(@"View Will Appear");
}

编辑:整个答案假定您有一个UIViewController的子类。在我看来,你是使用viewControllers旁路,这通常是一个坏主意。

答案 1 :(得分:0)

我在界面构建器中找到了解决方案,我必须在forst选项卡中添加自定义类。