Ios 我收到一个错误-nib必须正好包含一个顶级对象,该对象必须是UITableViewCell实例'&引用;

Ios 我收到一个错误-nib必须正好包含一个顶级对象,该对象必须是UITableViewCell实例'&引用;,ios,uitableview,swift3,tableviewcell,Ios,Uitableview,Swift3,Tableviewcell,我在tableView中使用了一个自定义单元格,但是当我运行时,我得到了我在问题中提到的错误 self.districtTableView.register(UINib(nibName: "PlaceCollectionViewCell", bundle: nil), forCellReuseIdentifier: "placeCell") func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {

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

 self.districtTableView.register(UINib(nibName: "PlaceCollectionViewCell", bundle: nil), forCellReuseIdentifier: "placeCell")

 func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    return false
}

func textFieldDidEndEditing(_ textField: UITextField) {
    // TODO: Your app can do something when textField finishes editing

    print("The textField ended editing. Do something based on app requirements.")
}

func numberOfSections(in tableView: UITableView) -> Int {
     return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return districts.count
}

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

    let cell = tableView.dequeueReusableCell(withIdentifier: "placeCell") as! PlaceTableViewCell
    // Set text from the data model
    cell.distLabel.text = districts[indexPath.row]
    cell.textLabel?.font = distTextField.font
    return cell

我怎样才能摆脱这个错误。我使用了不同的方法在表视图中注册单元格。但它不起作用。如果您正在使用tableviewcell的xib,请提供帮助,然后在viewDidLoad中这样注册您的xib

tableView.registerNib(UINib(nibName: "PlaceTableViewCell", bundle: nil), forCellReuseIdentifier: "placeCell")
如果您使用的是tableViewcell的自定义类,请尝试此类

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

正如我看到的,您的代码工作几乎是正确的。希望我的回答对您有所帮助。

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


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

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

我从Interface builder(XIB)中添加了轻触手势。 删除将解决此问题的


您必须通过编程方式在xib中添加手势,错误可能会误导。我不知何故把一些视图拖到了我的单元格中,它在主视图之外创建了另一层视图。只需从您的xib中删除,nd错误必须消失

我也有同样的问题,我的单元格中没有所有必要的约束。查看它

在我的例子中,它是一个添加到单元格外部的视图。它不应该在那里


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

您的nib类需要从UITableViewCell扩展是否确实已将UITableViewCell添加到xib文件?而xib文件只包含一个吗?@Purushothaman是的。@RakeshMohan:看看@RakeshMohan,你在xib文件中有多个视图吗?我不知怎么把一些视图拖到了我的牢房里,结果崩溃了。非常感谢,节省了我一些时间。我也是这样。我在Xib文件的单元格外以某种方式创建了一个额外的标签,可能会导致这个令人困惑的错误消息。但为什么会这样呢??