我目前正在尝试使用xCode 6.3 swift 1.2创建自定义表格视图单元格。出于某种原因,在cellforRowAtIndexPath方法中,我似乎无法设置我的单元格变量。代码将编译,但是当这行代码命中时:
var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell
我收到此错误:无法将'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
}
感谢您提供的任何帮助。我似乎无法让它发挥作用。
答案 0 :(得分:65)
在这种情况下,您可以检查以下几项内容:
查看您的表格是否与您的班级相关联,通常是@IBOutlet weak var tableView: UITableView!
注册自定义表格视图单元格:self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
请注意,即使您的自定义单元格具有不同的类和ID,也使用“UITableViewCell”和标识符“cell”。
在cellForRowAtIndexPath中将您的单元格取消:let cell: MessageCell = self.tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell
现在使用正确的单元格标识符。
答案 1 :(得分:38)
以viewDidLoad()
方法注册您的CustomCell:
self.tableView.register(CustomCell.self, forCellReuseIdentifier: "Cell")
答案 2 :(得分:9)
在viewDidLoad()
中// register custom table view cell from nib
self.tableView.registerNib(UINib(nibName: "MessageCell", bundle: nil), forCellReuseIdentifier: "messageCell")
答案 3 :(得分:9)
答案 4 :(得分:6)
X代码9.4
与这里流行的答案之一不同,此解决方案使用自定义表格单元格解决了我的噩梦。如果您正在使用情节提要,并且所有内容均已正确连接,则不必在viewDidLoad中注册自定义tableView单元格。
从viewDidLoad中删除:
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
答案 5 :(得分:5)
我有同样的错误消息。但对我来说,问题是我没有在界面构建器中设置我的自定义单元格的类。
答案 6 :(得分:2)
在我的情况下,我没有更改UITableViewCell类。最初它是DetailsTableViewCell类,但我删除并添加了一个名为TableViewCellClass的新类。但我忘记在这里更改单元格类名称。
所以再次检查并更改TableViewCell类名称见下面的屏幕截图
答案 7 :(得分:0)
首先,我建议您使用CocoaClass重新创建您的单元类。我有类似的错误 - 我创建了一个CollectionViewCell,当我认识到我的错误时,我决定简单地重命名父类。但是,编译器没有注意到任何错误,我在构建期间遇到了这个错误。
答案 8 :(得分:0)
Swift 3语法:
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
答案 9 :(得分:0)
我有同样的错误。正如obo2O在评论中指出的那样,他的解决方案对我有用:
答案 10 :(得分:0)
使用[30/Dec/2017 09:28:05] "GET /accounts/checkname?username=wepfwe HTTP/1.1" 301 0
[30/Dec/2017 09:28:05] "GET /accounts/checkname/?username=wepfwe HTTP/1.1" 200 4
[30/Dec/2017 09:28:11] "GET /accounts/checkname/?username=Dmitry HTTP/1.1" 200 4
[30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryA HTTP/1.1" 200 4
[30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryAd HTTP/1.1" 200 4
[30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryAdm HTTP/1.1" 200 4
[30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryAdmi HTTP/1.1" 200 4
duplicate
[30/Dec/2017 09:28:13] "GET /accounts/checkname/?username=DmitryAdmin HTTP/1.1" 200 5
重新创建课程,然后选择cocoaClass
我遇到了同样的问题。
答案 11 :(得分:0)
自定义单元格类名称和单元格ID保持相同:
self.tableView.register(CustomCell.self, forCellReuseIdentifier: "CustomCell")