无法将'UITableViewCell'类型的值转换为'(AppName).(CustomCellName)'

obo*_*o20 35 xcode uitableview ios swift

我目前正在尝试使用xCode 6.3 swift 1.2创建自定义表格视图单元格.出于某种原因,在cellforRowAtIndexPath方法中,我似乎无法设置我的单元格变量.代码将编译,但是当这行代码命中时:

    var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell
Run Code Online (Sandbox Code Playgroud)

我收到此错误:无法将'UITableViewCell'(0x1112f5a18)类型的值转换为'CampusExchange.MessageCell'(0x10e8318f0).

这是我的完整方法:(如果你想知道我是如何设置消息,我正在使用Parse)

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

    var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell

    let message = messagesArray[indexPath.row]["Message"] as? String
    cell.messageOutlet.text = message
    return cell
}
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助.我似乎无法让这个工作.

Rod*_*nto 66

在这种情况下,您可以检查以下几项内容:

  1. 看看您的表是否与您的班级相关联,通常是 @IBOutlet weak var tableView: UITableView!

  2. 注册自定义表格视图单元格:self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") 请注意,即使您的自定义单元格具有不同的类和ID,也使用"UITableViewCell"和标识符"单元格".

  3. 在cellForRowAtIndexPath中将您的单元格出列:let cell: MessageCell = self.tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell 现在使用正确的单元格标识符.

  • 在我的特定情况下,代码是正确的,但在我创建UITableviewCell的故事板中,我忘了使用UITableViewCell的检查器设置我的自定义类.在Custom Class下的检查器中,当它应该说"UserInfoCell"时,它仍然说"UITableViewCell",这是我创建的自定义子类的名称. (13认同)
  • 第 2 点也是我的问题!这是至关重要的,因为对于普通的 tableview 控制器,未指定要注册的单元格,因此假设重用标识符应该用于两个地方是相当直观的。我花了很长时间才找到这个答案。非常感谢 (2认同)

小智 40

viewDidLoad()方法中注册您的CustomCell :

self.tableView.register(CustomCell.self, forCellReuseIdentifier: "Cell")
Run Code Online (Sandbox Code Playgroud)


Dee*_*hav 11

我有同样的问题,我为单元格设置自定义类但忘记设置模块 在此输入图像描述

选择这样的模块之后,它起作用了

在此输入图像描述


Lon*_*ham 9

在viewDidLoad()中

// register custom table view cell from nib
self.tableView.registerNib(UINib(nibName: "MessageCell", bundle: nil), forCellReuseIdentifier: "messageCell")
Run Code Online (Sandbox Code Playgroud)


Pat*_*erg 8

X代码9.4
与这里的流行解答不同,此解决方案使用自定义表格单元格解决了我的噩梦。如果您正在使用情节提要,并且所有内容均已正确连接,则不必在viewDidLoad中注册自定义tableView单元格。

从viewDidLoad中删除:
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")


Ara*_*ell 7

保持自定义单元类名称和单元 ID 相同:

   self.tableView.register(CustomCell.self, forCellReuseIdentifier: "CustomCell")
Run Code Online (Sandbox Code Playgroud)


Mil*_*der 5

我有同样的错误消息.但对我来说问题是我没有在界面构建器中设置我的自定义单元格的类.


iOS*_*iOS 5

就我而言,我没有更改 UITableViewCell 类。最初它是 DetailsTableViewCell 类,但我删除并添加了名为 TableViewCellClass 的新类。但是我忘记在这里更改单元类名称。

所以再次检查并更改 TableViewCell 类名,请参见下面的屏幕截图

在此处输入图片说明