如何刷新UITableViewController视图?

时间:2017-05-27 10:39:34

标签: ios swift3

我正在进行网络服务调用,以根据搜索字词检索研究文章列表。当我的应用程序启动时,表视图为空。我明白了。但是,一旦我成功进行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
}

5 个答案:

答案 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()
}