重新编写时,UITableView行重复swift

时间:2015-07-21 05:10:26

标签: ios iphone swift uitableview

我有一个tableview,一些数据填充到tableview中。现在我有一个编辑选项,通过点击该选项,用户可以通过向上或向下拖动来编辑行的位置。

为了重新排序,我正在使用tableView的委托函数。

例如,这是tableView数据

A

C

d

现在的问题是,当我点击编辑按钮并将最顶部的单元格拖到底部并将其作为最后一个单元格时,然后向上和向下滚动tableView(仍处于编辑模式)底部(当前看到tableView的位置)重复。

现在将A重新排序到底部,然后上下滚动

C

d

d

搜索后我找到了preapreForReuse,但它无法正常工作。

我使用自定义单元格类来渲染表格单元格。

class customCell: UITableViewCell {    
init(frame: CGRect) {
    super.init(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
    #add the details
}

required init(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
}
}

编辑:

override func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) {
    var sdata = self.data[sourceIndexPath.row]
        self.data.removeAtIndex(sourceIndexPath.row)
        self.data.insert(sdata, atIndex: destinationIndexPath.row)
}

这似乎是非常常见的问题,但它不适合我

希望你能理解这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您是否更改了模型以反映更改?如果你的模型在索引3中有D,那么你将在那里显示。

当您将A移动到D时,您还需要更新模型,而不仅仅是表格。