UITableview:无法从其dataSource获取单元格

时间:2016-10-06 17:52:22

标签: ios uitableview swift3

我收到以下错误消息:failed to obtain a cell from its dataSource

奇怪的是

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

甚至没有被调用,问题不在于返回的单元格是否为零。我提出了断点。 cellForRowAt没有被调用。

numberOfRowsInSection返回值。

我不知道它是否相关,但现在我不使用UITableViewController,我只有一个UIViewController,它是datasourcedelegate对于UITableView。我希望它不会造成干扰。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

交叉检查以下核对清单: -

  • 这是因为您未能将可重复使用的单元格出列。
    • 问题是你的cellForRowAtIndexPath函数嵌入了另一个函数
    • 当您忘记将UITableViewDataSource和UITableViewDelegate协议添加到ViewController declaration时。

类DataViewController:UIViewController,UITableViewDataSource,UITableViewDelegate

答案 1 :(得分:0)

我想这是你的问题 - Failed to obtain a cell from its DataSource

您可以查看:https://www.hackingwithswift.com/example-code/uikit/fixing-failed-to-obtain-a-cell-from-its-datasource

尝试这样的事情:

cell = tableView.dequeueReusableCellWithIdentifier(getCellIdentifierForType(cellType))
        setDataToCell(cell, item: item)
祝你好运

答案 2 :(得分:0)

请确保当您将代码从 swift 旧版本迁移到新版本时,您的 tableview 数据源和委托已更新语法。 例如

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

不能自动更新到以下:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {