2015-08-08 85 views
1

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

我在dequeueReusableCellWithIdentifier的呼叫前后添加了一个日志,您可以在屏幕截图中看到前一个被调用一次,一个从未调用。

enter image description here

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

有什么建议吗?

+0

它可能不会改变任何问题,但我不确定你使用'dequeueReusableCellWithIdentifier'的权利。它应该返回一个可选的单元格,但是你强制将它转换为一个显式解包的单元格('as!UITableViewCell'部分)。尝试删除转换并添加,如果出队操作返回了'nil'(这对您当前的代码是不可能的),那么在if之后检查“if(cell == nil){...}”以实例化新的单元格。 – Romain

+0

我也尝试过,它也不会返回无 – Icaro

+0

您使用故事板吗?如果您已经在故事板中的某处注册了单元格标识符“cellOverview”,则可以尝试使用更新的方法,该方法可确保返回单元格(非可选)。如果你使用的是故事板,试试这个:'let cell = tableView.dequeueReusableCellWithIdentifier(“cellOverview”,forIndexPath:indexPath)' – Romain

回答

0

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

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

我不得不从故事板中删除我的自定义单元格,只要我这样做,所有开始再次工作,第一个标识符不存在的错误,比临时的一个开始工作,比我重新创建原来的一个(完全像以前一样),所有人都开始重新工作。

非常矫枉过正,但为我工作。感谢所有的帮助!

+0

我有同样的问题。一切都很好。甚至还有10个原型单元加载正常,只有一个正在解决问题。我检查了错别字等标识符文字。也尝试过清理项目。但没有任何反应。:( –

0

表示您正在打印println("return dequeueReusableCellWithIdentifier"),但在您的函数结束时看不到您的return cell代码,该代码必须符合您的函数期望。

+0

好吧,它是波纹管,你不能在屏幕截图中看到,但有两点在这里,首先和更重要的代码不会编译,如果我没有返回一个单元格,因为它是功能所需的,其次我们需要同意:返回语句的代码行println(“return dequeueReusableCellWithIdentifier”)必须先执行。 – Icaro

+0

尝试像这样:'let cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier(“cellOverview”)as UITableViewCell !顺便说一下,你使用的是什么Xcode?根据Xcode版本的不同,我发现了一些不同的展开选项。 – Marco

相关问题