【问题标题】:dequeueReusableCellWithIdentifier never returnsdequeueReusableCellWithIdentifier 永远不会返回
【发布时间】:2015-08-08 23:04:12
【问题描述】:

当我调用 dequeueReusableCellWithIdentifier 时,它会冻结我的代码并且永远不会返回任何单元格(或 nil)我将代码从我的自定义类更改为 UITableViewCell 以确保问题不在我的类中,我还创建了一个全新的空单元格以使用标识符进行调用。

我在调用dequeueReusableCellWithIdentifier 之前和之后添加了一个日志,正如您在屏幕截图中看到的那样,之前的日志被调用一次,之后的日志从未调用。

我尝试清理和构建,清理项目文件夹,删除 DerivedData,重新启动计算机。我看不到任何异常或真正持有代码的内容。

有什么建议吗?

【问题讨论】:

  • 它可能不会改变您的问题,但我不确定您是否使用dequeueReusableCellWithIdentifier 正确。它应该返回一个可选单元格,但您将其强制转换为显式展开的单元格(as! UITableViewCell 部分)。如果出队操作返回nil(这在您当前的代码中是不可能的),请尝试删除强制转换并添加if (cell == nil) { ... },然后检查以实例化一个新单元格。
  • 我也尝试过它也不返回 nil
  • 您在使用情节提要吗?如果您已经在情节提要中的某处注册了单元格标识符"cellOverview",则可以尝试使用更新的方法,该方法保证返回一个单元格(非可选)。如果您使用故事板,请尝试此操作:let cell = tableView.dequeueReusableCellWithIdentifier("cellOverview", forIndexPath: indexPath)
  • 我认为这与使单元格出队无关。其他东西正在冻结你的线程。
  • 就我而言,这个问题解决了问题stackoverflow.com/questions/32611789/…

标签: xcode uitableview parsing


【解决方案1】:

我不确定 XCode 发生了什么,但是,如果有人在这里发现同样的问题,我必须这样做。

我没有发现单元格有任何问题(是的,我使用的是故事板并且标识符设置正确)并且注意到自定义类中的代码也有问题。我什至去创建一个辅助自定义类和自定义单元格,但它没有帮助,所以我尝试输入一个无效的标识符,即使在那里 XCode 也没有返回错误(应该如此)。

我不得不从情节提要中删除我的自定义单元格,一旦我这样做了,所有这些都重新开始工作,首先是标识符不存在的错误,然后是临时的开始工作,然后我重新创建了原始一个(和以前一模一样),然后全部重新开始工作。

非常矫枉过正,但对我有用。感谢大家的帮助!

【讨论】:

  • 我也遇到了同样的问题。一切都很好。甚至还有 10 个原型单元都可以正常加载,但只有一个在解决问题。我检查了标识符文本中的拼写错误等。也尝试了清理项目。但是什么也没发生.. :(
【解决方案2】:

表示你正在打印println("return dequeueReusableCellWithIdentifier"),但是在你的函数末尾看不到你的return cell代码,这必须符合你的函数期望。

【讨论】:

  • 好吧,它在下面,您在屏幕截图中看不到,但是这里有两点,首先也是更重要的是,如果我没有返回单元格,代码将无法编译,因为它是必需的函数,其次我们需要同意:要到达返回语句,必须首先执行代码行 println("return dequeueReusableCellWithIdentifier")。
  • 试试这样:let cell: UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cellOverview") as UITableViewCell!。顺便问一下,您使用的是什么 Xcode?根据 Xcode 版本,我发现一些不同的展开选项。
猜你喜欢
  • 2019-11-15
  • 2011-07-25
  • 1970-01-01
  • 2012-10-02
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多