ios - 如何让 iOS 在 tableView 上显示删除按钮,但不允许从右侧完全滑动删除
问题描述
对于我的应用程序来说,从右侧完全滑动以从 tableView 中删除太危险了,因为我的用户报告意外丢失了数据。
我可以添加一个“你确定吗?” 提示,但我希望允许出现删除按钮,但禁用完全滑动行为。
我怎样才能做到这一点?
解决方案
通过用您自己的副本替换通常的删除按钮行为来做到这一点,将 performFirstActionWithFullSwipe 设置为 FALSE
- (UISwipeActionsConfiguration *) tableView:(UITableView *)tableView
trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath {
//optional- returns previous behaviour when table is in edit mode
if (tableView.editing ) {
return nil;
}
UIContextualAction *deleteAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:@"Delete"
handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
// call your existing delete code
[self tableView:tableView commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:indexPath ];
}];
UISwipeActionsConfiguration *config = [UISwipeActionsConfiguration configurationWithActions:@[deleteAction]];
config.performsFirstActionWithFullSwipe=FALSE; // this is why we are replacing the delete button!
return config;
}
推荐阅读
- angular - 在 Angular 中从 Firebase 获取和显示数据
- java - 非常基本的 JFrame 没有出现
- javascript - 使用 d3.mouse 时出现 D3 Typescript 错误:“this”隐含类型为“any”,因为它没有类型注释
- java - Spring Boot + JPA + Hibernate CommandAcceptanceException:执行 DDL 时出错
- java - Gradle javadoc 任务因意外文本而失败
- fix-protocol - How to identify an average pricing AllocationInstruction in FIX 4.4?
- flutter - 甩动时如何删除Flutter PageView中的弹簧动画
- angular - 对 ng-select 值使用 firebase 唯一键
- r - 使用 ggplots 制作华夫饼图
- c# - 如何在 WPF 中使用 PreviewMouseLeftButtonDown 事件忽略 TreeViewItem 扩展器上的鼠标单击?