我正在进行网络服务调用,以根据搜索字词检索研究文章列表。当我的应用程序启动时,表视图为空。我明白了。但是,一旦我成功进行Web服务调用并使用我的自定义对象填充数据源,我就不知道如何触发UITableViewDataSource协议所需的方法来刷新我的表视图。有人可以建议吗?
let articleLibrary = ArticleLibrary()
......
switch listOfArticlesStatus{
case let .failure("main fail"):
print("main fail")
case let .success(list):
// LIST OF ARTICLES SUCCESSFULLY RETRIEVED!
// Assign articles to ArticleLibrary
self.articleLibrary.allArticles = list
var numRows = list.count
// HOW DO I REFRESH THE TABLEVIEW FROM HERE? OR DO I?
default:
break
}
// Sets how many rows in the table view to display
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let numRows = self.articleLibrary.allArticles.count
if numRows != nil {
print("numRows: \(numRows)")
return numRows
}else{
print("numRows: \(numRows)")
return 0;
}
}
// Create cells to populate table
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Create instance of UITableViewCell
let cell = UITableViewCell.init(style: .subtitle, reuseIdentifier: "UITableViewCell")
let item = articleLibrary.allArticles[indexPath.row]
cell.textLabel?.text = item.title
cell.detailTextLabel?.text = item.pmid
return cell
}
答案 0 :(得分:3)
yourTableView.reloadData()
调用此方法。此方法将重新加载整个表。 但是,如果您只想重新加载可见单元格,请调用此方法。
tableView.reloadRows(at:tableView.indexPathsForVisibleRows!, with: .none)
答案 1 :(得分:2)
self.tableView.reloadData()
这应该可以胜任。
答案 2 :(得分:2)
更新数据源后使用self.tableView.reloadData()
。
答案 3 :(得分:1)
使用self.tableView.reloadData()
刷新您的表格。
答案 4 :(得分:1)
self.tableView.reloadData()
对于正常情况就足够了。如果您在闭包或后台线程中,则需要在主块中重新加载tableView
,如下所示:
DispatchQueue.main.async {
self.tableView.reloadData()
}