UITableViewDelegate.h
// Swipe actions
// These methods supersede -editActionsForRowAtIndexPath: if implemented
// return nil to get the default swipe actions
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
Cependant, je retourne nil dans ma méthode trailingActions et je peux toujours faire un balayage complet pour supprimer dans ma table. Comment puis-je empêcher le balayage complet? (Je veux que l'utilisateur ait à glisser puis appuyez sur le bouton "Supprimer".
@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
return nil
}
EDIT: J'avais implémenté canEditRowAt et validé le style d'édition avant la mise à jour iOS 11/XCode 9/Swift 4. Le balayage complet a été activé avant même que j'implémente le trailingSwipeActionsConfigurationForRowAt.
Implémentez comme ci-dessous:
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let delete = UIContextualAction(style: .destructive, title: "Delete") { (action, sourceView, completionHandler) in
print("index path of delete: \(indexPath)")
completionHandler(true)
}
let swipeAction = UISwipeActionsConfiguration(actions: [delete])
swipeAction.performsFirstActionWithFullSwipe = false // This is the line which disables full swipe
return swipeAction
}
Ceci est la ligne qui désactive le balayage complet
swipeAction.performsFirstActionWithFullSwipe = false
Et supprimez les autres fonctions si vous implémentez des fonctions comme editingStyle
et editActionsForRowAt
.
J'ai pu désactiver les actions de balayage pour des cellules particulières en suivant cette réponse: https://stackoverflow.com/a/50597672/1072262
Au lieu de retourner zéro, vous pouvez retourner:
return UISwipeActionsConfiguration.init()