Swift 3:TableView刷新不适用于行动作

时间:2017-07-24 14:16:27

标签: ios swift uitableview reloaddata

我正在使用“接受”滑动操作。当我单击滑动按钮时,一切在Web服务器上都很完美,但tableView没有得到更新。实际上我在tableView.reloadData()函数中使用getOnay,但它不起作用。

有趣的是,当我按两次滑动操作按钮时,会删除tableView上的行。

这是我的代码:

override func tableView(_ tableView: UITableView, editActionsForRowAt: IndexPath) -> [UITableViewRowAction]? {

    let onay = UITableViewRowAction(style: .normal, title: "Accept") { action, index in
        let ip = editActionsForRowAt.row
        let taskInfo:Task = self.onayArray[ip]

        self.getOnay(id: taskInfo.id, status: "okay")

        self.onayArray.remove(at: index.row)
        self.loadOnaylar(userID: self.onayCode.userId, code: self.onayCode.systemCode)
    }
    onay.backgroundColor = .green

    return [onay]
}

2 个答案:

答案 0 :(得分:0)

在您拨打self.onayArray.remove(at: index.row)并呼叫getOnay后,您可以调用该功能从阵列中删除该元素(tableView.reloadData())。因此,在从阵列中删除元素之前,您将重新加载数据。当您再次执行滑动操作时,会调用reloadData,最后更新上一个操作的效果。

因此,请更改getOnayremove(at: index.row)函数的排序:

self.onayArray.remove(at: index.row)
self.getOnay(id: taskInfo.id, status: "okay")

答案 1 :(得分:0)

您是否尝试在主队列中重新加载数据()?

 DispatchQueue.main.async {
     tableView.reloadData()
 }