无法将types'UITableViewCell'的值转换为'(AppName)。(CustomCellName)'
我目前正在尝试使用xCode 6.3 swift 1.2创build自定义表格视图单元格。 出于某种原因在cellforRowAtIndexPath方法,我似乎无法设置我的单元格variables。 代码会编译,但是当这行代码命中时:
var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell
我得到这个错误:无法将types'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 }
感谢您的任何帮助。 我似乎无法得到这个工作。
有几件事你可以检查这个:
-
看看你的表是否链接到你的类,通常通过
@IBOutlet weak var tableView: UITableView!
-
注册自定义表视图单元格:
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
请注意,即使您的自定义单元格具有不同的类和ID,也使用“UITableViewCell”和标识符“单元格”。 -
在cellForRowAtIndexPath中出列你的单元格:
let cell: MessageCell = self.tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell
let cell: MessageCell = self.tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell
现在使用正确的单元标识符。
在viewDidLoad()
方法中注册你的CustomCell:
self.tableView.register(CustomCell.self, forCellReuseIdentifier: "Cell")
在viewDidLoad()
// register custom table view cell from nib self.tableView.registerNib(UINib(nibName: "MessageCell", bundle: nil), forCellReuseIdentifier: "messageCell")
我有相同的错误信息。 但是对于我来说,问题是我没有在界面生成器中设置自定义单元的类。
首先,我build议你使用CocoaClass重新创build你的单元类。 我有一个非常相似的错误 – 我创build了一个CollectionViewCell,当我意识到自己的错误时,我决定重命名父类。 但是,编译器没有注意到任何错误,在构build期间我有这个错误。
Swift 3语法:
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
我有同样的错误。 obo2O在他的评论中说,他的解决scheme为我工作:
- 转到Interface Builder
- 点击相关的故事板
- 点击tableview中的相关单元格
- 在“实用程序”面板(右侧)中,单击“显示标识检查器”图标
- 在“自定义类”部分 – >“类”字段中,将该类设置为其他任何内容并运行该应用程序。 应用程序崩溃,因为classX不能转换为classY
- 在“自定义类”部分 – >“类”字段中,将类设置为正确的类并重新运行。