无法将 UITableViewCell 设置为单元格

Posted

技术标签:

【中文标题】无法将 UITableViewCell 设置为单元格【英文标题】:can't set UITableViewCell as a cell 【发布时间】:2015-08-03 14:13:14 【问题描述】:

我已经做了一个ViewController,在那个ViewController,我已经做了一个TableView,在TableView我已经添加了一个TableViewCell。 在TableViewCell 中,我添加了一个文本标签和一个图像。 我制作了一个名为customCell 的可可触摸文件并将其与TableView Cell 连接起来。

ViewController 文件中我写了这个:

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

            let cell:customCell = tableView.dequeueReusableCellWithIdentifier("cell") as! customCell
            cell.imageCountry.image = UIImage(named: "2xd.png")
            cell.nameCountry.text = "hey"
return cell

这是我在 customCell 文件中写的: 导入 UIKit

class customCell: UITableViewCell 

    @IBOutlet var imageCountry: UIImageView!
    @IBOutlet var nameCountry: UILabel!


我已将 TableView 和 ViewController 与 DataSource 和 Delegate 连接起来。 当我运行我的代码时,这是我得到的错误:

Could not cast value of type 'UITableViewCell' (0x10d1119f0) to 'refreshing.customCell' (0x10b2f6dd0).

*refreshing 是项目的名称。

而臭虫的绿线设置为这一行:

let cell:customCell = tableView.dequeueReusableCellWithIdentifier("cell") as! customCell

有什么建议吗?

【问题讨论】:

希望这会有所帮助:***.com/questions/29812168/… @Rambo 在链接中尝试了两个答案,我在 AppDelegate.swift 文件的这一行中得到另一个错误:class AppDelegate: UIResponder, UIApplicationDelegate 听起来与“单元格”标识符关联的单元格未定义为customCell。当您说“将其与 TableView Cell 连接”时,您实际上是如何做到的? @PhillipMills 在 MainStoryboard>ViewController>Table View>Cell>Identifier:"cell" 您是否还在情节提要中将单元格的类设置为customCell 【参考方案1】:

您正在使用旧的装饰方法,该方法要求您创建单元格或使用采用 indexPath 的新方法

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

如果仍然失败,您需要注册单元格,方法是在情节提要中进行设置,或者在代码中注册类或 nib 文件。

override func viewDidLoad() 
    super.viewDidLoad()
    tableView.registerNib(UINib(nibName: "customCell", bundle: nil), forCellReuseIdentifier: "cell")

override func viewDidLoad() 
    super.viewDidLoad()
    self.tableView.registerClass(customCell.self, forCellReuseIdentifier: "cell")

【讨论】:

在你编辑之前,我添加了这一行:tableView.registerNib(UINib(nibName: "customCell", bundle: nil), forCellReuseIdentifier: "customCellOne") 它成功了!我想问为什么,因为当我输入 cell 它有错误(就像你编辑的那样) 错误是:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle:,然后是很多行错误..为什么当我放置一个未命名为“cell”的标识符时它会起作用? 确定你没有使用过 registerNib 和一次 registerClass? 在使用 Nib 之前,我使用了 Class,但是当我使用 Nib 时,我对 Class 做了//。为什么重要?【参考方案2】:

您需要在此处将自定义类设置为单元格的类^

要子类化,请确保在您的 CustomClass.h 文件中拥有

@interface CustomClass : UITableViewCell

【讨论】:

我在哪里输入这一行?:@interface CustomClass : UITableViewCell 它应该是您的 CustomCell.h 文件中的第一行之一,在任何导入之后 但看起来你实际上是这样做的,我在你的问题中错过了。 非常感谢您的帮助! @vikingosegundo 的回答帮助了我,在他的回答中查看我的评论为什么

以上是关于无法将 UITableViewCell 设置为单元格的主要内容,如果未能解决你的问题,请参考以下文章

使用 NIB 无法识别 UITableViewCell 内单击的单元格 UITableView

点击时无法更改 UItableViewCell 中按钮的图像

在 UITableViewCell 中获取自定义单元格的高度

错误:无法使用自定义单元格类设置 UITableViewCell 标签和图像!只能加载单元格样式的数据:字幕不是自定义的

如何将 UITableviewcell 子视图添加为 uiscrollview

UITableViewCell未选中时如何将其背景视图设置为选中的背景?