带有TextView的swift自定义UITableViewCell消失了

时间:2015-06-11 22:28:28

标签: ios swift uitableview

我正在尝试在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
}

1 个答案:

答案 0 :(得分:0)

您滥用出列程序:

var cell = tableView.dequeueReusableCellWithIdentifier(ReuseIds.reviewCell, forIndexPath: indexPath) as? PhotoAndRateTableViewCell

if (cell == nil) {
   cell = PhotoAndRateTableviewCell();
}

您希望重用一个单元格(如果可用),或者如果没有则重新创建一个单元格。在您的情况下,您每次(通用类)创建一个单元格,然后尝试从您的自定义类(从未创建过)中出现一个单元格

就保留数据而言,您需要在表格单元格中实现prepareForReuse方法,该方法应清除单元格中包含的任何索引特定数据。然后在cellForRow中,您可以重新设置单元格的数据以便重新出现

相关问题