2017-07-03 10 views
0

したがって、削除および編集ボタンを含むテーブルビューでカスタムスワイプを作成しようとしています。しかし、編集したいセルの行を参照することはできません。この場合のインデックスは[x、y]になります。スワップ時の編集ボタンのインデックスを参照して、xは常に0になり、yは行インデックスになります。Swift 3 UITableViewRowActionで行インデックスを参照する方法

[x、y]の行インデックス、つまりyをどのように参照できますか。ありがとう!

override func tableView(_ tableView: UITableView, editActionsForRowAt: IndexPath) -> [UITableViewRowAction]? { 
    let delete = UITableViewRowAction(style: .normal, title: "Delete") { action, index in 
     self.leaveLeaveType.remove(at: index.row) 
     self.leaveStartsTime.remove(at: index.row) 
     self.leaveEndsTime.remove(at: index.row) 
     self.leaveHost.remove(at: index.row) 
     self.leaveDest.remove(at: index.row) 
     tableView.deleteRows(at: [index], with: .fade) 
    } 

    let edit = UITableViewRowAction(style: .normal, title: "Edit") { action, index in 
     //self.performSegue(withIdentifier: "editLeaveRequest", sender: self) 
     let editCell = self.tableView.cellForRow(at: index)! as! LeaveRequestTableViewCell 
     self.editLeaveType = editCell.leaveLeaveType.text! 
     self.editHost = editCell.leaveHost.text! 
     self.editDest = editCell.leaveDest.text! 

     let cellDateTime = editCell.leaveDateTime.text! 
     let startsTimeStartIndex = cellDateTime.index(cellDateTime.startIndex, offsetBy: 0) 
     let startsTimeEndIndex = cellDateTime.index(cellDateTime.endIndex, offsetBy: -22) 
     let startsTimeRange = startsTimeStartIndex..<startsTimeEndIndex 
     self.editStartsTime = cellDateTime[startsTimeRange] 

     let endsTimeStartIndex = cellDateTime.index(cellDateTime.startIndex, offsetBy: 22) 
     let endsTimeEndIndex = cellDateTime.index(cellDateTime.endIndex, offsetBy: 0) 
     let endsTimeRange = endsTimeStartIndex..<endsTimeEndIndex 
     self.editEndsTime = cellDateTime[endsTimeRange] 

    } 

    delete.backgroundColor = .red 
    edit.backgroundColor = .lightGray 

    return [delete, edit] 
} 

答えて

0

ローカルパラメータラベルindexPathこのindexPathは、選択されたセルのセクションと行が含ま

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

が欠落しているため、コードが動作しないことができます。

+0

私はスワイプしてindexPathを印刷しようとすると[0,0]や[0,1]などの[x、y]のようなsthを表示しています。 1は行です。また、削除ボタンと編集ボタンがあるので、同じ[x、y]を押すと、[x、y]インデックスのxは何を表しますか? –

+0

oh..itはreturn [delete、edit]を参照しています –

+0

インデックスパスのフォーマットは '[section、row]' – vadian

関連する問題