2011-11-21 51 views
2

我有两个使用导航栏的viewController。第一个viewController显示我在第二个viewController上更改的一些数据。所以如果我加载第二个viewController,后退按钮出现在导航栏中,我可以更改我的值(他们存储,我用调试器)。我的问题是,在点击backButton来到我的第一个控制器之后,它并不称之为viewDidLoad方法。很显然,当没有调用该函数时,根本没有更新值。ViewController在加载后不会更新

在第一次启动时,viewDidLoad方法被调用并执行我想要的操作。在viewControllers之间来回之后,该方法不会再被调用。

任何解决方案?

谢谢!

编辑:

解决

我不想删除我的问题,也许有人需要这个太:

这种方法被称为每次出现的观点的时候,它可能是不默认定义为:

-(void)viewDidAppear:(BOOL)animated 
{ 
NSLog(@"View appeared."); 
} 

回答

2

但是更新代码(如[[self view] setNeedsDisplay];)在viewWillAppear

要说清楚:您的视图加载时会调用viewDidLoad。这是在第一次显示视图时发生的。当你然后导航到下一个视图时,第一个视图可以(取决于你的代码)仍然被加载。因此,当你回到那个视图viewDidLoad将不会被调用,因为视图仍然存在。

但每次显示视图时(例如,当您导航回该视图时),将调用方法viewWillAppearviewDidAppear

希望有所帮助。

+0

谢谢。我不明白-1虽然... – DAS

+1

这不是我...... – dasdom

1

ViewDidLoad当有视图控制器分配 - 初始化发生时,方法将被调用。在导航控制器中后退的情况下,它不会创建任何新的视图控制器,它将重新使用来自导航堆栈的先前引用。因此viewDidLoad不会被调用。因为你的视图控制器已经在内存堆栈中。所以它只会使视图重新出现在窗口上,它将分别称为viewWillAppear

相关问题