tableview和外部数据源

时间:2017-05-28 15:58:47

标签: ios uitableview swift3 delegates xcode8

我有一个带有UITable View的视图控制器。

我的数据源是外部的。我使用数据任务转到某些带有某些参数的URL,得到一个JSON响应,最后得到一个Swift字典对象,其中包含我希望添加到表视图单元格的数据。所有这些都发生在viewdidload函数中。

我如何使用字典中的数据填充表格,因为只有在收到数据后才需要这样做?

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ViewControllerTableViewCell
    cell.myLabel.text = json_surveys[indexPath.row]["SName"]
    return (cell)

}

那么我怎么能告诉tableView我的字典,但只有在我真正拥有字典之后?

3 个答案:

答案 0 :(得分:1)

每当您从服务器收到数据时,请使用self.tableView.reloadData()。这将重新加载tableView的所有单元格。

答案 1 :(得分:1)

听起来您想要从完成数据任务内部重新加载数据,您希望将调用发送到主线程,如下所示

DispatchQueue.main.async {
    self.tableView.reloadData()
}

答案 2 :(得分:-1)

您需要将string Query = "UPDATE UserData " + // Was missing--^ "SET Full_Name = @Fullname, Date_Of_Birth = @DateOfBirth, ID_Number = @IdNumber, Age = @Age " + // Here Too--------------------------------------------------------------------------------^ "WHERE Id = @Id";//Update query 委托和数据源分配给此tableView

你可以这样做:

UIViewController

然后你需要在这个类中添加class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { .... cellForRow协议函数。

我发现您已添加numberOfRows,还应添加cellForRow功能,以及您收到错误的原因。

像这样添加:

numberOfRows

然后,只要您从服务器获取数据并将其添加到数组中,就可以调用func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return dataArray.count } ,例如dataArray中。