2017-07-24 39 views
1

我正在使用「接受」刷卡操作。當我點擊滑動按鈕時,在網絡服務器上一切正常,但tableView不會更新。實際上,我在getOnay函數中使用tableView.reloadData(),但它不起作用。Swift 3:TableView刷新不適用於行操作

有趣的是,當我按下滑動動作按鈕兩次時,它將刪除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] 
} 
+0

你能分享你的loadOnaylar方法代碼嗎? –

+0

基本上它只是一個JOSN郵政編碼。我可以共享loadOnaylar,但問題是,當我運行調試時,這個函數根本無法在row action onay var中工作。這怎麼可能? – winnervswinner

回答

0

你調用函數調用getOnay你說電話tableView.reloadData()結束後從陣列(self.onayArray.remove(at: index.row))刪除元素。因此,在從陣列中刪除元素之前,您正在重新加載數據。當您再次執行滑動操作時,將調用reloadData,最後更新上一個操作的效果。

因此改變的getOnayremove(at: index.row)功能排序:

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

它不在onay var中工作,我不知道爲什麼。 – winnervswinner

+0

@winnervswinner你的'getOnay(...)'函數做了什麼? – Paolo

+0

這個函數已經得到了json方法。在sening get方法之後,它重新加載tableview。 – winnervswinner

0

你嘗試reloadData()在主隊列?

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

它沒有工作。我認爲這不是關於主隊列。 – winnervswinner