我正在尝试创建一个自定义的单元格,它可以在点击时扩展。我使用了这个github示例:https://github.com/rcdilorenzo/Cell-Expander
该行给出运行时错误SIGABRT:
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
(cell as! EventTableViewCell).watchFrameChanges()
//Could not cast value of type 'UITableViewCell' (0x105aa1b80) to 'AppName.EventTableViewCell' (0x104287fe0).
}
我也从这个帖子上查了答案,跟着走了三步,但没有运气:Could not cast value of type 'UITableViewCell' to '(AppName).(CustomCellName)'
我的自定义单元格类如下所示:
import UIKit
class EventTableViewCell : UITableViewCell {
...
}
索引路径上的行单元格:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier( "eventCell", forIndexPath: indexPath)
let date = self.eventArray[indexPath.row].startTime
let calendar = NSCalendar.currentCalendar()
let minutes = calendar.component(NSCalendarUnit.Minute, fromDate: date)
var minutesString: String
if (minutes == 0) {
minutesString = "00"
} else {
minutesString = String(calendar.component(NSCalendarUnit.Minute, fromDate: date))
}
let hours = calendar.component(NSCalendarUnit.Hour, fromDate: date)
cell.textLabel?.text = self.eventArray[indexPath.row].title + " - \(hours):\(minutesString)"
return cell
}
}
请帮帮忙。
4条答案
按热度按时间uttx8gqw1#
“我有自我.表格视图.寄存器类(UITableViewCell.self,for CellReuseIdentifier:“eventCell”)在我的viewDidLoad中”
这可能会覆盖您在情节提要中设置的值。请尝试删除此行,或将其更改为
self.tableView.registerClass(EventTableViewCell.self, forCellReuseIdentifier: "eventCell")
。fkaflof62#
在情节提要中,单击单元格并将类名设置为EventTableViewCell,而不是UITableViewCell
或者,如果您是以程序设计方式执行所有动作,请在cellForRowAtIndexPath中执行下列动作:
tkclm6bt3#
你确定你得到的单元格是
EventTableViewCell
的一个示例吗?你用registerClass:forCellReuseIdentifier:
注册了你的自定义单元格类吗?如果您将程式码从这个变更为:
更改为:
你还能得到异常吗
另外,您是否使用了GitHub示例中的相同故事板?如果是,您是否更新了故事板以使用单元格类名并重用标识符?您使用的是EventTableViewCell/“eventCell”,但原始代码使用的是PickerTableViewCell/“cell”。
9o685dep4#
正如@Greg Brown所说,解决方案是将单元格的类型更改为自定义单元格类: