[問題] 讓tableView等待data下載完再開始建立

看板MacDev作者時間6年前 (2018/05/17 08:56), 6年前編輯推噓3(301)
留言4則, 3人參與, 6年前最新討論串1/1
如何讓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
資料下載完的時候 tableView.reloadData() 就好了
05/17 09:21, 1F

05/17 11:18, 6年前 , 2F
樓上說的沒錯 在你的getData()最後呼叫tableiew.reloadD
05/17 11:18, 2F

05/17 11:21, 6年前 , 3F
ata()內 然後都沒東西就顯示empty message 不然很醜XD
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
資料在AppDelegate get的話 我會用NotificationCenter
05/18 10:19, 4F
感謝樓上 因為我還有排序的過程,所以直接包在裡面會出現重複排序的狀況(就不多解釋了) 最後還是用NotificationCenter解決了 參考下面這個網址 https://goo.gl/BMfieY 希望也有幫助到其他人 ※ 編輯: hehehaha (114.36.129.222), 05/22/2018 16:42:19
文章代碼(AID): #1Q_DDHie (MacDev)