[問題] 讓tableView等待data下載完再開始建立
如何讓tableView等待data下載完再開始建立
各位好
我要做的事情是
1.從firebase下載data
2.讓data顯示在tableView的cell裡面
我目前設定是:
1.建一個getData(),結束時會建立一個Array,也就是要放入cell的內容
2.把這個getData()放在didFinishLaunchingWithOptions裡面
3.一進到app,第一個view就是tableView
遇到的狀況是:
1.如果在網路不夠快,或是firebase稍慢的時候,viewWillAppear、viewDidAppear執行的時候,data尚未下載完畢,這時候首頁就會空白一片。
2.用print的方式可以看到,在viewWillAppear以及viewDidAppear執行的時,numberOfRowsInSection其實已經return了好幾次,但這時候數字都是0,也可以看到後續其實不定時的都會再更新幾次。
3.有時候幸運一點?,data下載比較快,會在某次自動更新前得到data,然後顯示在頁面上。
4.但如果在它自動更新次數用完之前,data還沒下載完,就會像最開始講的一樣,空白一片在那邊。
5.這時候如果按home鍵,出去再進來,就會看到資料顯示。
我的問題是:
1.有沒有辦法,讓tableView等到data下載完再更新?
2.有沒辦法,強迫自動更新一直到data下載完為止?
3.或是有其他的解決方式,請告訴我關鍵字,我來嘗試。
以上,我用我目前的知識盡量說明了,如果有遺漏的地方,請告訴我。
不管有沒有答案,都先感謝大家,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.135.147
※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1526518609.A.B28.html
→
05/17 09:21,
6年前
, 1F
05/17 09:21, 1F
推
05/17 11:18,
6年前
, 2F
05/17 11:18, 2F
推
05/17 11:21,
6年前
, 3F
05/17 11:21, 3F
太棒了,問題順利解決
我真是太蠢,一直在外面找tableView.reloadData()適合的點
最後把tableView.reloadData()包在getData()裡面就好了
謝謝上面兩位
※ 編輯: hehehaha (114.136.42.144), 05/17/2018 13:36:39
※ 編輯: hehehaha (114.136.42.144), 05/17/2018 13:42:56
推
05/18 10:19,
6年前
, 4F
05/18 10:19, 4F
感謝樓上
因為我還有排序的過程,所以直接包在裡面會出現重複排序的狀況(就不多解釋了)
最後還是用NotificationCenter解決了
參考下面這個網址
https://goo.gl/BMfieY
希望也有幫助到其他人
※ 編輯: hehehaha (114.36.129.222), 05/22/2018 16:42:19