Как отключить полный пробел в ячейке таблицы в iOS11
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);
Тем не менее, я возвращаю nil в моем методе trailingActions, и я все еще могу сделать полное удаление, чтобы удалить его в моем представлении таблицы. Как я могу предотвратить полный салфетки? (Я хочу, чтобы пользователь пропустил, а затем нажмите кнопку "Удалить".
@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
return nil
}
EDIT: я реализовал canEditRowAt и зафиксировал стиль редактирования перед обновлением iOS 11/XCode 9/Swift 4. Полный салфетка была включена даже до того, как я применил trailingSwipeActionsConfigurationForRowAt.
Ответы
Ответ 1
Выполните следующие действия:
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
}
Это строка, которая отключает полный салфетки
swipeAction.performsFirstActionWithFullSwipe = false
И удалите другие функции, если вы реализуете такие как editingStyle
и editActionsForRowAt
.