ViewController在加载后不会更新

时间:2011-11-21 13:29:48

标签: ios xcode uiviewcontroller uinavigationcontroller

我使用导航栏有两个viewControllers。第一个viewController显示我在第二个viewController上更改的一些数据。

因此,如果我加载第二个viewController,NavBar中会出现一个后退按钮,我可以更改我的值(并且 存储,我使用调试器)。我的问题是,在点击backButton来到我的firstView控制器后,它没有调用它的viewDidLoad方法。很明显,当没有调用此函数时,根本没有更新的值。

在第一次启动时,调用viewDidLoad方法并完成我想要的操作。在viewControllers之间来回切换后,不再调用该方法。

任何解决方案?

谢谢!

编辑:

解决

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

每次出现视图时都会调用此方法,默认情况下可能没有定义:

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

2 个答案:

答案 0 :(得分:2)

[[self view] setNeedsDisplay];中的更新代码(如viewWillAppear)。

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

但每次要显示视图时(例如当您导航回此视图时),都会调用方法viewWillAppearviewDidAppear

希望有所帮助。

答案 1 :(得分:1)

当视图控制器分配 - 初始化发生时,将调用

ViewDidLoad方法。在向后移动导航控制器的情况下,它不会创建任何新的视图控制器,它会重复使用导航堆栈中的先前引用。

因此viewDidLoad不会被调用。由于您的视图控制器已经在内存堆栈中。因此,它只会让视图重新出现在Windows上,它将分别调用viewWillAppear