2017-10-15 76 views
1

我有點不確定如何最好地處理這個問題。 在我的xcode項目中,tableviewcontroller是初始視圖。它充滿了來自Firebase的數據。 我使用單例作爲我的模型,當我的應用程序啓動一個函數「readInFirebase」時,會填充一個數組,最終成爲tableviewcontroller的數據源。使用來自firebase的數據填充一個「初始視圖」的tableviewcontroller

但是很明顯,如果有大量數據需要讀取 - 或者互聯網連接速度很慢 - 當它加載時,tableviewcontroller將顯示爲空,因爲firebase尚未完成讀取。

我想知道人們是如何處理這個問題的。我只是有UIActivityIndi​​cator覆蓋tableviewcontroller,直到數據填充?

謝謝。

回答

1

您應該爲此獲得completion handler,並在開始獲取數據時啓動UIActivityIndicator。當您從完成處理程序獲得回調時,則停止UIActivityIndicator

如果你想更進一步,你可以獲取一部分數據,然後當用戶向下滾動時獲取更多數據。這樣就不會有很多等待和加載時間給用戶。

+0

Hi Rashwan。謝謝。我的模型中有readInFirebase函數,實際上並不在ViewController中。 readInFirebase函數在我的應用程序最初加載時被調用 - readInFirebase不會從TableViewControler執行。所以當模型中的readInFirebase完成時,我需要告訴TableViewController。 readInFirebase函數放在TableViewController中更簡單嗎? – Mike

+0

我沒有使用過'readInFirebase',但是我現在有和現在一樣的結構,但是之前我沒有使用它,也不知道它是如何工作的。 –

+0

Hi @Rashwan。我有這一切工作。我有一個完成處理程序,並在Firebase加載完成時在我的TableViewController中收到通知。但我現在遇到的問題是如何重新加載表數據。 model.readInFirebaseData {(成功)在 ( 「完成」) } // activityIndi​​catorView.stopAnimating() 數據列表= model.dataArray self.tableView.reloadData() } ......的tableView .reloadData()沒有做任何事情。但是,如果我繼續到不同的屏幕並回來,TableView被填充。 – Mike

相關問題