我正在尝试在tableView中使用textView获取自定义tableView单元格。我已经在其中创建了一个带有textView的自定义UITableViewCell。
我可以使用textView里面的自定义UITableViewCell出现在UITableView中。
我可以在textView中单击以输入内容,但是当我完成输入并单击另一个tableViewCell时,第一个带有textView内部的tableViewCell会消失。消失后,它变成一个空的tableViewCell。 XCode给出了这样的信息: “没有重复使用表格单元格的索引路径”
但是,当我在tableView中滚动并向后滚动回空tableViewCell时,它会重新出现。 我不知道如何防止tableViewCell消失。似乎答案与在UITableView中使用restorationIdentifier有关,但我不确定如何使用它。在文档中,它说使用restorationIdentifier进行状态保存。
以下是我的相关代码:
inside ViewDidLoad():
tableView.registerClass(PhotoAndRateTableViewCell.classForCoder(), forCellReuseIdentifier: ReuseIds.reviewCell)
tableView.registerNib(UINib(nibName: "PhotoAndRateTableViewCell", bundle: NSBundle.mainBundle()), forCellReuseIdentifier: ReuseIds.reviewCell)
在cellForRowAtIndexPath中:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var section = indexPath.section
let cell = UITableViewCell()
var cell = tableView.dequeueReusableCellWithIdentifier(ReuseIds.reviewCell, forIndexPath: indexPath) as PhotoAndRateTableViewCell
cell.selectionStyle = UITableViewCellSelectionStyle.None
return cell
}
答案 0 :(得分:0)
您滥用出列程序:
var cell = tableView.dequeueReusableCellWithIdentifier(ReuseIds.reviewCell, forIndexPath: indexPath) as? PhotoAndRateTableViewCell
if (cell == nil) {
cell = PhotoAndRateTableviewCell();
}
您希望重用一个单元格(如果可用),或者如果没有则重新创建一个单元格。在您的情况下,您每次(通用类)创建一个单元格,然后尝试从您的自定义类(从未创建过)中出现一个单元格
就保留数据而言,您需要在表格单元格中实现prepareForReuse方法,该方法应清除单元格中包含的任何索引特定数据。然后在cellForRow中,您可以重新设置单元格的数据以便重新出现