使用deleteRowsAtIndexPaths和reloadRowsAtIndexPaths时出现故障

时间:2015-04-30 00:18:32

标签: uitableview swift reload

我似乎无法一起使用deleteRowsAtIndexPathsreloadRowsAtIndexPaths

didSelectRowAtIndexPath中,调用reloadRowsAtIndexPaths来更新行。

在我的自定义ViewCell中,我使用委托删除TableView中的行,每当我滑动此单元格时都使用deleteRowsAtIndexPaths。标签设置为与滑动一起移动,如果不满足条件则返回。

在调用deleteRowsAtIndexPaths删除行之前,一切正常。从这里开始,下一个单元格表现奇怪,标签处于将要删除单元格的状态。

要解决此问题,我可以使用reloadData()代替,但我真的想知道导致此行为的原因,而不是一直强制使用reloadData()

didSelectRowAtIndexPath的代码:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    // Code to add item to datamodel
    tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .None)
}

cellForRowAtIndexPath的代码:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = orderTableView.dequeueReusableCellWithIdentifier("orderViewCell") as! OrderViewCell
    let item = data[indexPath.row]

    cell.delegate = self
    cell.nameLabel.text = item.name;
    cell.amountLabel.text = item.amount
    cell.priceLabel.text = item.price

    cell.amount = item.amount;
    cell.name = item.name

    return cell
}

处理删除的方法:

func deleteItem(name: String) {
    if let index = find(data.map { $0.name }, name) {
        data.removeAtIndex(index)
        let indexPath = NSIndexPath(forRow: index, inSection: 0)
        tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Left)
    }
}

0 个答案:

没有答案