2017-07-03 4 views
0

So versuche ich eine benutzerdefinierte Swipe in der Tabellenansicht einschließlich einer Schaltfläche zum Löschen und Bearbeiten zu erstellen. Ich kann jedoch nicht auf die Zeile der ausgewählten Zelle verweisen, die ich bearbeiten möchte. Der Index lautet in diesem Fall [x, y], wobei x immer 0 ist und sich auf den Index der Bearbeitungsschaltfläche beim Kopieren bezieht, während y der Zeilenindex ist.Swift 3 So verweisen Sie auf den Zeilenindex in UITableViewRowAction

Wie kann ich auf den Zeilenindex verweisen, mit anderen Worten, y in [x, y]. Vielen Dank!

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] 
} 

Antwort

0

Der Code kann nicht funktionieren, da das lokale Parameter label indexPath ist

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

Diese indexPath enthält den Abschnitt und Zeile der ausgewählten Zelle fehlt.

+0

Danke für die Hilfe ... aber wenn ich wische und versuche, den IndexPath zu drucken, zeigt es immer noch etw wie [x, y], wie [0,0] oder [0,1], die 0, 1 sind die Reihen. Da ich eine Lösch- und eine Bearbeitungsschaltfläche habe, habe ich festgestellt, dass beide zu demselben [x, y] führen, wenn sie gedrückt werden. Wofür steht dann der Index x in [x, y]? –

+0

oh..it bezieht sich auf die Rückkehr [löschen, bearbeiten] –

+0

Das Format eines Index Pfades ist '[Abschnitt, Zeile]' – vadian

Verwandte Themen