无法使用具有正确定义的标识符的标识符单元格对单元格进行出列

时间:2017-10-23 02:10:48

标签: ios swift tableview

我遇到了TableViewController的奇怪问题

mainApp.filter("dateParser", function() { 
   return function(input) { 
      //do your process and return
  };
})

没有意义 enter image description here

标识符设置正确。

*** Assertion failure in -[UITableView _dequeueReusableCellWithIdentifier:forIndexPath:usingPresentationValues:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3694.4.18/UITableView.m:7732
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier cell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'

但是,如果我放置

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

在ViewDidLoad中,然后它可以工作。然而,故事板中的原型不会也不会被使用。

此时我不知道发生了什么。 TableViewController类也正确设置。

3 个答案:

答案 0 :(得分:0)

我理解你的问题,你的桌面视图找不到注册的单元格只有一个原因。

解决方案是您必须再次检查您的代码。请检查storyboard和cellForRowAt方法中的标识符拼写。

如果此解决方案不起作用,请按照以下步骤操作:

  1. 粘贴在cellForRowAt方法

    中的代码下面

    let cell = tableView.dequeueReusableCell(withIdentifier:“cell”,for:indexPath)

    返回单元格

  2. 从故事板中删除tableviewcontroller中的所有单元格。

  3. 拖放新的TableViewCell,并给出适当的独立“单元格”

  4. 构建并运行。

    这个解决方案肯定会奏效。

答案 1 :(得分:0)

当您使用TableViewCell时,我确定您还创建了一个tableCell类,就像我的情况一样"CustomTableCellClass"如下

class CustomTableCellClass: UITableViewCell {

    weak var CategoriesDelegate: CategoriesVcDelegate?
    weak var itemsDelegate: ItemsvcDelegate?


    //MARK: Outlets of CategoriesVcTableView
    @IBOutlet weak var ProductImage: UIImageView!
    @IBOutlet weak var ProductName: UILabel!
    @IBOutlet weak var ProductPrice: UILabel!
    @IBOutlet weak var ProductStarImage: UIButton!

}

我的cellReuseIdentifier声明 -

 let cellReuseIdentifier = "cell" 

现在将其变为

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

    let cell = self.CategoriesTableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! CustomTableCellClass

    cell.CategoriesDelegate = self
    cell.ProductStarImage.tag = indexPath.row
    cell.ProductName.text = productNameArray[indexPath.row]
    cell.ProductPrice.text = productPriceArray[indexPath.row]
    cell.ProductImage.image = productImagesArray[indexPath.row]

    return cell
}

希望有所帮助:)

答案 2 :(得分:0)

似乎问题出现在我用于导航的自定义库中。而是从故事板标识符初始化视图控制器,它直接初始化类,因此故事板视图控制器是无用的。

现在一切都很好。