我的故事板中有一个主场景和第二个场景。
当应用首次启动时,将调用主场景viewDidLoad()
功能。然后,我展示了第二个场景。当我回到第一个场景时,viewDidLoad()
没有被调用。
在第二个场景中,我实现了viewDidDisappear()
函数,它在场景消失之前更新数据库。
在主场景中,我使用viewWillAppear()
函数来读取相同的数据库,但它不起作用。
在第二个场景消失函数之前,以某种方式调用主场景viewWillAppear
。它应该是其他方式不是吗?
因为在回到第1页的时候,活跃的故事板消失,出现新的故事板。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
首先,仅在视图控制器加载时调用viewDidLoad
;当您返回到现有的视图控制器实例时,它不是已加载,只显示已经加载的视图控制器,因此您所看到的是预期的。
关于第二个问题,请仔细查看函数名称;
viewDidDisappear
- 后,视图消失后,此函数将被称为
viewWillAppear
- 在将 你说“它会在场景消失之前更新数据库。”但是通过函数名称可以看到它会在视图消失后更新数据库。
您可以使用函数viewWillDisappear
来更新数据库,因为在第二个视图控制器消失之前它将被称为,而viewDidAppear
用于更新视图 第一个视图控制器重新出现。
或者,您可以使用委派模式允许第二个视图控制器明确告知第一个视图控制器(作为其委托)数据已更改。