为标识符注册的无效nib(CELLNAME) - nib必须包含一个必须是UITableViewCell实例的顶级对象

Cai*_*tri 50 xcode objective-c uitableview ios

很抱歉这个长标题,但我想通过谷歌搜索清楚地看到它.此外,这与此处的许多其他类似问题不同,因为它没有指定"空"标识符,而是实际存在的标识符.

当您尝试使用表视图控制器中的一个单元格导航到另一个视图(无论该视图可能是什么)时,基本上会出现问题.

大多数人在完成"待办事项列表"上的苹果教程后会遇到这个问题,并期望细胞以相同的动作运行而不管其目的如何.这个问题对于大多数人来说可能过于简单,但对于初学者来说,这很难,我花了大约3个小时.

基本上错误是:

invalid nib registered for identifier (prototypeCell) - nib must contain exactly one top level object which must be a UITableViewCell instance
Run Code Online (Sandbox Code Playgroud)

'prototypeCell'可以是你的细胞被称为什么.这是在应用程序启动时立即发生的异常.

sim*_*ley 182

我遇到了与上面相同的问题,但我没有使用故事板,问题只是突然出现了.

我发现解决方案是在tableview单元文件中.我添加了一个uibutton,但它被错误地添加到了单元格的边界之外.这意味着它几乎就像是uiview中的额外视图.

一旦我找到它并删除了这个额外的视图,问题就会立即消失.

如果您遇到此错误,请检查uitableviewcell以查看错误添加的额外视图和对象

  • 如果我添加了UIGestureRecognizer,并且绝对不是错误怎么办? (32认同)
  • @pkc456,认真吗?在我的情况下,我最终通过在awakeFromNib方法中手动添加UIGestureRecognizer. (3认同)
  • 令我惊讶的是,我意外地在侧面创建了一个图像视图......感谢轻松修复 (2认同)

Jee*_*hut 25

simon_smiley的答案向我指出了正确的方向,但需要更多的反复试验才能得到以下解决方案:

问题不仅发生在其他顶级UIView对象上,也发生在手势识别器上.因此,请确保在失败的XIB文件中不使用任何手势识别器,您可以在代码中设置它们.

例如,您可以awakeFromNib在接受的答案评论中按照vahotm的说明进行操作.


Ann*_*nie 7

我有同样的问题!在我的情况下,自定义单元格是UIView的子类,而不是UITableViewCell.所以用UITableViewCell替换UIView解决了这个问题!


abh*_*ran 6

就我而言,我在 xib 中错误添加了一个额外的 ImageView。删除它,一切正常。

在此处输入图片说明


Wil*_* Hu 5

同样的问题,因为我拖放UITapGestureRecognizer了子视图ContentView.只需删除它.