Ich habe eine Tabellenansicht, die ihre Zellen ändert, basierend auf welcher Taste gedrückt wird. In der ersten Tabellenansicht möchte ich die Zelle nur wischen können, wenn die Schaltfläche gedrückt wird; Wenn dies nicht der Fall ist, sollte die Swipe-Funktion deaktiviert sein. Wenn die Taste gedrückt wird, ist die Tabellenansicht wischbar und zeigt die gewünschte Aktion an. Wenn die Schaltfläche jedoch nicht gedrückt wird, kann die Zelle weiterhin mit einer "Lösch" -Aktion getippt werden. Ich möchte auch nicht, dass eine Zeile wischbar ist, wenn das Zellenlabel den Namen des aktuellen Benutzers enthält.Wischen erlaubt nur bei bestimmten Zellen
Ich habe meinen Code für die Tabellenansicht am unteren Rand hinzugefügt. Wie behebe ich das?
-Code für die erste Tabelle:
override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let cell = tableView.cellForRow(at: indexPath) as! DetailsCell
let detailsAction = UITableViewRowAction(style: UITableViewRowActionStyle.default, title: "Details") { (action , indexPath) -> Void in
if isCharacterButtonPressed == true { //if button is pressed
if cell.label != currentUser.name{
let viewController = self.storyboard?.instantiateViewController(withIdentifier: "SeeDetails") as! DetailsVC
viewController.person = cell.person
self.navigationController?.pushViewController(viewController, animated: true)
} else {
return .none
}
return [detailsAction] //makes cell swipe-able
} else { //if button is not pressed
return .none //do not make the cell swipe-able
}
}
EDIT:
Ich habe es mit der canEditRow
Funktion festgelegt, aber diese roten Kreise zeigen auf der Seite der Zellen auf, die geklaut werden kann, wenn ich wische sie. Wie behebe ich das? Ich habe einen Screenshot davon angehängt: