我收到一个错误 - nib必须包含一个顶级对象,该对象必须是UITableViewCell实例'"

时间:2016-12-16 09:59:06

标签: ios uitableview swift3 tableviewcell

我在tableView中使用自定义单元格,但是当我运行时,我得到了我在问题中提到的错误。

var sInput = '[http://www.example.com/path/image.jpg, (default)], [, (medium)], [something, (large)]',
    re = /\[([^,]*)/g,
    m;

while(m=re.exec(sInput))
  document.write('"' + m[1] + '"<br/>');

如何摆脱这个错误。我在表视图中使用了不同的方法来注册单元格。但它不起作用。请帮忙

8 个答案:

答案 0 :(得分:16)

我已经从“界面”构建器(XIB)中添加了点击手势

删除即可解决此问题。

您必须通过以编程方式方式

在xib中添加手势

答案 1 :(得分:10)

.xib文件中有多个表视图单元格也会导致此错误。 将表视图单元格移动到它们各自的.xib文件中解决了我的错误。

  

nib必须只包含一个顶级对象,该对象必须是UITableViewCell实例

答案 2 :(得分:7)

打开“PlaceCollectionViewCell.xib”文件。确保只有一个顶级视图(查看侧面板,而不仅仅是画布,它可能不可见)。确保你的视图有一个分配的类,它是UITableViewCell的子类(不是UICollectionViewCell,xib名称看起来对我很可疑),以及重用标识符。

only one view on top level

has class and reuse identifier

答案 3 :(得分:5)

如果你正在使用tableviewcell的xib,那么在viewDidLoad中注册你的xib。

tableView.registerNib(UINib(nibName: "PlaceTableViewCell", bundle: nil), forCellReuseIdentifier: "placeCell")

如果你正在使用tableViewcell的自定义类,那么试试这个,

let placeCell : PlaceTableViewCell = tableView.dequeueReusableCell(withIdentifier: "placeCell") as! PlaceTableViewCell

正如我所看到的,您的代码工作几乎是正确的。希望我的回答可以帮到你。

答案 4 :(得分:1)

该错误可能会引起误解。我以某种方式将某些视图拖到我的单元格中,这在主视图之外又创建了另一种视图。只需从您的xib中删除该错误即可,

答案 5 :(得分:1)

确保从代码中将“属性检查器”面板中的“标识符”属性设置为指定的“重用标识符”。

答案 6 :(得分:0)

我遇到了同样的问题,那是因为我的牢房中没有所有必要的约束。看看

答案 7 :(得分:0)

在我的情况下,是在单元格外部添加的视图。应该不应该去那里

enter image description here