使用来自firebase的数据填充一个“初始视图”的tableviewcontroller

问题描述:

我有点不确定如何最好地处理这个问题。 在我的xcode项目中,tableviewcontroller是初始视图。它充满了来自Firebase的数据。 我使用单例作为我的模型,当我的应用程序启动一个函数“readInFirebase”时,会填充一个数组,最终成为tableviewcontroller的数据源。使用来自firebase的数据填充一个“初始视图”的tableviewcontroller

但是很明显,如果有大量数据需要读取 - 或者互联网连接速度很慢 - 当它加载时,tableviewcontroller将显示为空,因为firebase尚未完成读取。

我想知道人们是如何处理这个问题的。我只是有UIActivityIndi​​cator覆盖tableviewcontroller,直到数据填充?

谢谢。

您应该为此获得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