Ios 如何手动调用“tableView numberOfRowsInSection”函数

Ios 如何手动调用“tableView numberOfRowsInSection”函数,ios,swift,tableview,cloudkit,Ios,Swift,Tableview,Cloudkit,我正在制作一个从CloudKit获取数据并在tableview中显示的应用程序。在viewDidLoad结束时,我调用另一个函数来获取数据并对其进行过滤。然而,我的tableView numberOfRowsInSection函数似乎在我的抓取函数之前被调用,因此我的tableView中没有任何行,因为我还没有完成我的抓取函数,并且我已指定为背景视图的视图会弹出,当我没有行时,它会弹出。我想知道,有没有办法在自定义函数的末尾再次调用我的tableView numberOfRowsInSectio

我正在制作一个从CloudKit获取数据并在tableview中显示的应用程序。在viewDidLoad结束时,我调用另一个函数来获取数据并对其进行过滤。然而,我的tableView numberOfRowsInSection函数似乎在我的抓取函数之前被调用,因此我的tableView中没有任何行,因为我还没有完成我的抓取函数,并且我已指定为背景视图的视图会弹出,当我没有行时,它会弹出。我想知道,有没有办法在自定义函数的末尾再次调用我的tableView numberOfRowsInSection函数,以便它可以更新tableView?我知道如何调用普通函数:

function(any parameters here)
不过,我似乎不知道该怎么称呼它:

tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
假设我无法将提取函数代码移动到ViewDidLoad中。

您不能直接调用numberOfRowsInSection。只需在tableView上调用reloadData,如下所示:

yourAsynchronousFunctionThatGetsYourDataFromCloudKit(){ records in
  //Set your data source with the CKRecords you got from CloudKit
  self.items = records

  //Reload the table
  self.tableView.reloadData()
}

//This gets called by reloadData()
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  return items.count
}

不清楚,但我认为你误解了一个概念。您的调用实际上是异步的,因此稍后将填充数据。但同时,必须呈现tableView,即使您还有0个数据。因此,在启动时调用UITableViewDatasource的所有必要方法是正常的。但是,一旦填充了数据,就可以重新加载tableview:myTableView.reloadData。若需要,将其放入DispatchQueue.main.async{},因为UI需要在主线程中完成。@Larme更新的问题,有点不清楚。谢谢,但我已经在呼叫重新加载数据。但问题是背景视图不会消失。我确实获取了数据,如果我的背景视图不在前面,它就会显示出来。在我的section函数中的行数中,我基本上把如果没有过滤的记录,显示背景视图,反之亦然。这就是我想重新调用该函数的原因,因此它将在if语句中转到另一个方向,因此我的记录是可见的。您应该包括相关代码。看来你的问题不是怎么叫numberOfRows。。。前面的注释已经解决了这一问题,但实际上如何从视图层次结构中删除视图。