dequeueReusableCellWithIdentifier不返回单元格

时间:2016-02-24 16:19:23

标签: ios swift uitableview

我有一个带有一个静态部分的静态表。其他部分是动态的。

我为动态部分创建了Table Section和Table Cell。设置Cell的标识符,为它设置自定义类,甚至执行:

self.tableView.registerClass(UncheckedStoreTableViewCell.self, forCellReuseIdentifier: "StoreCell")

enter image description here

如果我没有用代码注册,那么我得到:

  

'无法使用标识符StoreCell对单元格进行出列 - 必须注册a   nib或标识符的类或连接原型单元格   故事板'

所以当我使用它时:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    if indexPath.section == 0 {
        return super.tableView(tableView, cellForRowAtIndexPath: indexPath)
    }

    let cell = tableView.dequeueReusableCellWithIdentifier("StoreCell", forIndexPath: indexPath) as! UncheckedStoreTableViewCell

    return cell
}

有效。但如果我试图更改标签:cell.myLabel.text = "one" 或只是print(cell.myLabel)得到了

  

BAD_INSTRUCTION

2 个答案:

答案 0 :(得分:2)

您无需在代码中注册您的单元格。

您已正确设置了单元格的标识符,但这还不够。除此之外,您还需要为您的单元格打开Identity Inspector,并将单元格的类设置为UncheckedStoreTableViewCell。这是一张图片,显示您应该在哪里设置它:

enter image description here

如果没有此步骤,Xcode将无法将您的小区标识符与您的自定义单元格正确关联,因为它对此一无所知!

答案 1 :(得分:2)

  1. 您绝对可以在静态表格视图中使用动态单元格。
  2. 不要指望静态表视图为您注册单元格的标识符。你自己动手吧。
  3. 您是否在单元类中为插件构建器中的某些视图提供了插座?如果我是你,我不希望表视图知道这一点。它会实例化你的细胞类,就是这样。不会设置插座。我认为这是相关的:load nib in view subclass
  4. 顺便说一句,如果你为你的单元格定义了一个自定义的.nib,就有这种方法:registerNib(_:forCellReuseIdentifier:)