再次调用 ViewDidLoad 方法

Posted

技术标签:

【中文标题】再次调用 ViewDidLoad 方法【英文标题】:ViewDidLoad Method is called again 【发布时间】:2013-02-27 20:39:01 【问题描述】:

我有两个视图控制器。首先我做了一些事情,然后我可以通过单击一个按钮(与故事板中的另一个 ViewController 连接的按钮)来推动第二个 View Controller。在那里我可以做一些设置等等。我用“完成”按钮回到第一个视图控制器。但随后,所有“东西”(文本字段中的文本,...)都消失了。

希望你们能理解我的问题。

为什么?我该如何禁用它?

【问题讨论】:

请发布代码,显示您如何移动到第二个视图控制器。 我在情节提要中执行此操作...右键单击按钮->将其拖到第二个 ViewController->Style:Modal 【参考方案1】:

您如何从第二个视图控制器返回到第一个视图控制器?我认为您的问题是当用户点击“完成”时您正在重新实例化第一个视图控制器。

相反,您应该使用“popViewControllerAnimated”或“dismissViewControllerAnimated”返回到第一个视图控制器。

例如:(这两个中的一个应该可以工作):

[self.navigationController popViewControllerAnimated:YES];
[self dismissViewControllerAnimated:YES completion:nil];

【讨论】:

我没有导航控制器。在情节提要中,我通过右键单击“完成”按钮将其拖动到第一个 ViewController。 +1:我同意,听起来他没有适当地弹出/关闭视图控制器,而是创建了它的一个新实例,它确实会调用viewDidLoad:“再次”(它是毕竟是一个新实例) 哦……不错。我刚刚用“[self dismissViewControllerAnimated:YES completion:nil];”对其进行了测试它奏效了。但现在的问题是,如果我在第二个 ViewController 的文本字段中添加文本,而不是回到第一个,然后再次在第二个中,文本消失了......【参考方案2】:

firstViewController 可能因为收到内存警告而被卸载。所以当它再次打开时,它会调用ViewDidLoad

【讨论】:

以上是关于再次调用 ViewDidLoad 方法的主要内容,如果未能解决你的问题,请参考以下文章

推送到新的 UIViewController 后强制再次调用 viewDidLoad

ViewDidLoad 没有被调用

Pan Segue 调用 viewDidLoad 循环

我总是必须在 -viewDidLoad 方法中调用 [super viewDidLoad] 吗?

IBAction 方法未在 viewDidLoad 方法中调用?

Monotouch:OpenFlowSharp,未调用 ViewDidLoad 方法