我的tableViewController在我在表格中添加新项目后尝试将单元格转换为自定义的uitableviewcell子类时,得到此错误消息msg( Swift动态强制转换失败)。
这里有一些相关的代码:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: UITableViewCell
if indexPath.section == 0 {
cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
(cell as UITableViewCell).selectionStyle = UITableViewCellSelectionStyle.None
(cell as UITableViewCell).textLabel!.text = "Some text"
return (cell as UITableViewCell)
} else if indexPath.section == 1 {
cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as SymbolTableViewCell
let symbol = notClosedSym[indexPath.row]
(cell as SymbolTableViewCell).loadCell(symbol)
return (cell as SymbolTableViewCell)
} else {
// similar to section 0
return (cell as UITableViewCell)
}
}
问题发生在我将新项目添加到列表并返回到tableView以及它何时尝试加载第1部分中的最后一行时。更确切地说,它发生在cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as SymbolTableViewCell
。
除了演员表失败的事实之外,有没有人可以猜到这里可能出现什么问题呢?
答案 0 :(得分:0)
为什么不在if块中声明单元格变量,如...
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.section == 0 {
let cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
(cell as UITableViewCell).selectionStyle = UITableViewCellSelectionStyle.None
(cell as UITableViewCell).textLabel!.text = "Some text"
return (cell as UITableViewCell)
} else if indexPath.section == 1 {
let cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as SymbolTableViewCell
let symbol = notClosedSym[indexPath.row]
(cell as SymbolTableViewCell).loadCell(symbol)
return (cell as SymbolTableViewCell)
} else {
// similar to section 0
return (cell as UITableViewCell)
}
}
如果继续出现相同的错误,请仔细检查您的UITableViewCell子类。