我使用iOS 11的新API来配置UITableView的滑动操作,如下所示。
- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)){
if (@available(iOS 11.0, *)) {
UIContextualAction *deleteAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive
title:@"Delete"
handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
[tableView.models removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[tableView reloadData];
[tableView setEditing:NO animated:YES];
completionHandler(YES);
}];
UISwipeActionsConfiguration *config = [UISwipeActionsConfiguration configurationWithActions:@[deleteAction]];
config.performsFirstActionWithFullSwipe = NO;
return config;
} else {
return nil;
}
}
首先,滑动按钮会正确显示并正常删除所选行。
然后我尝试继续滑动以完成删除操作。
然后发生了行为行为。
我刚刚刷过的行无法选择。
例如,删除第二行之后。我试图滑动第四个单元格,但是选择了第三个单元格并准备进行滑动。具有weid行为的行都在我刚刚删除的行之下。
此外,删除按钮的高度是行高度的两倍。 如下图所示,是删除按钮的屏幕截图。 the delete button is abnormal
所有错误均在iOS 11上得到解决。因为操作在iOS 10上是正常的。 这是iOS 11的错误吗?如何解决?任何帮助表示赞赏。谢谢!