我是iOS开发的初学者,我正在使用firebase数据库制作一个简单的聊天应用程序。实际上我对使用viewDidLoad
方法感到困惑。
以下是该应用的屏幕截图:https://ibb.co/gqD4Tw
当我想将数据(聊天消息)发送到firebase数据库时,我不明白为什么retrieveMessage()
方法放在viewDidLoad
上,我使用了sendButtonPressed()
方法(这是一个{ {1}})当我想从数据库中检索数据时,我使用IBAction
。
retrieveMessage()
方法在retrieveMessage()
上调用,据我所知,viewDidLoad
方法只在视图加载到内存后调用一次。我们通常将它用于初始设置。
因此,如果在初始设置中只调用viewDidLoad
一次,为什么{I}}方法可以在发送消息数据后一遍又一遍地检索我发送到我自己的数据库的所有消息到数据库?
我不明白为什么viewDidLoad
方法放在retrieveMessage()
下面是简化代码:
retrieveMessage()
答案 0 :(得分:5)
viewDidLoad
方法在ViewController生命周期中只调用一次。
在retrieveMessage()
中调用viewDidLoad
的原因是因为它添加了观察者以开始侦听已接收和已发送的消息。一旦收到或发送消息,就会调用此块(观察者)
然后在数组self.messageArray.append(message)
中添加该文本并更新tableview。
答案 1 :(得分:1)
viewDidLoad只被调用一次,但是firebase函数启动一个监听器,在后台工作并同步数据。 它在viewDidLoad中调用,因为它告诉 - >加载此视图时,开始侦听消息。
答案 2 :(得分:0)
ViewDidLoad()
仅在初始化ViewController时调用。
如果您希望每次用户再次查看VC时都调用一个函数(例如,在从另一个VC返回segue之后),您可以使用ViewDidAppear()
。
调用ViewDidLoad()
时也会调用它。