我正在尝试在swift中切换两个自定义单元类,但我似乎无法弄清楚如何返回单元格。
我的代码如下所示,错误位于最后一行:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
if istrue{
var cell: CustomTableCell = self.tv.dequeueReusableCellWithIdentifier("cell") as CustomTableCell
let data = myList[indexPath.row] as Model
cell.customLabel.text = data.username
cell.dateLabel.text = printDate(data.date)
return cell
}else{
var cell: CustomTableCell2 = self.tv.dequeueReusableCellWithIdentifier("cell") as CustomTableCell2
let data = myList[indexPath.row] as Model
cell.titleLabel.text = data.username
cell.dateLabel2.text = printDate(data.date)
return cell
}
}return nil
我还尝试在最后一行“返回单元格”并删除if-和else语句中的另外两行“返回单元格”,但这不起作用,它只是给了我错误说“cell”是一个未解析的标识符。
我之前从未这样做过,所以我不确定这是解决这个问题的正确方法。
有关如何继续的任何建议将不胜感激。
答案 0 :(得分:5)
定义UITableViewCell
类型的变量并在if和else分支中初始化它,然后将其用作返回值:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
var retCell: UITableViewCell
if istrue{
var cell: CustomTableCell = self.tv.dequeueReusableCellWithIdentifier("cell") as CustomTableCell
let data = myList[indexPath.row] as Model
cell.customLabel.text = data.username
cell.dateLabel.text = printDate(data.date)
retCell = cell
}else{
var cell: CustomTableCell2 = self.tv.dequeueReusableCellWithIdentifier("cell") as CustomTableCell2
let data = myList[indexPath.row] as Model
cell.titleLabel.text = data.username
cell.dateLabel2.text = printDate(data.date)
retCell = cell
}
return retCell
}
请注意,您无法返回nil
,因为此方法的返回类型是非可选UITableViewCell
,因此它必须始终是({1}}派生的类的实例
或者,您可以像在if和else分支上一样返回单元格,但是从if / else范围中删除结尾UITableViewCell
- 不需要它。此外,在您的代码中,它也是错误的,因为在方法范围之外。
个人注意事项:在函数中我通常会在身体中间避免return
语句,最后选择一条退出路径 - 这只是个人偏好,所以请随意选择一个你更喜欢