我面對我時,API調用之前啓動活動指示燈和後停止的問題,但是我無法做正確,如果我填寫的TableView與.childAdded。由於.childAdded僅在添加子項時纔會調用,所以我的活動指示符始終處於加載狀態。例如:火力地堡.childAdded和活動指示燈
func parseData() {
self.activityIndicator.startAnimating()
DataService.instance.SOME_DATA.observe(.childAdded, with: { (snapshot) in
if let snapshot = snapshot.value as? Dictionary<String, Any> {
let data = someData(data: snapshot)
self.array.append(data)
}
DispatchQueue.main.async {
self.tableView.reloadData()
self.activityIndicator.stopAnimating()
}
})
}
所以基本上如果沒有.childAdded任何值將不會被調用,活動指示燈將永遠不會停止,因爲停止,只有當的tableView被重新加載。 可以請一些建議如何正確地做到這一點?非常感激。
基礎上,建議答案有些更新:
我給基於聊天應用爲例,它會更容易理解。 我有以下的數據庫結構:
user_messages
unique_user_id
unique_user_chat_id
unique_message_1
unique_message_2
unique_message_3
unique_message_4
messages
unique_message_1
text...
unique_message_2
text...
unique_message_3
text...
unique_message_4
text...
我有2個視圖控制器和每個具有的TableView
父視圖控制器獲取所有unique_user_chat_id並且當客戶端然後按所選擇的聊天,第二視圖控制器從'消息'對象中填充所有孩子。正如你看到childAdded
.value的在「消息」對象獲取unique_user_chat_id,獨生子女.childAdded
是的,我能做到這一點,並從第一次看它會工作,但如果用戶將連接到互聯網的問題?動畫將開始,API將不會被調用,動畫將在2秒內停止(以延遲爲例)。 – Sargot
@Sargot我修改了我的答案。 –
非常感謝您的幫助!你能否根據你的回答檢查我更新的問題,並告知我是否做得正確?另外我不確定我應該撥打哪個動畫? – Sargot