我有一个UITableView,我希望为用户提供在他滑动或轻弹手指时删除行的功能。我知道编辑样式,它提供了一个带有-ve标志的圆形红色按钮。但是如何实现轻弹风格。我看到很多应用程序使用它,因此apple为它提供了任何内置的委托,或者我们需要为它编写自己的控制器。
答案 0 :(得分:32)
为了获得滑动效果,您需要实现表视图委托
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
方法,这将提供对滑动交互的访问以进行删除。我通常也会为可以删除的tableviews提供编辑交互,因为滑动交互往往对用户有点隐藏。
举个例子:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView beginUpdates];
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Do whatever data deletion you need to do...
// Delete the row from the data source
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationTop];
}
[tableView endUpdates];
}
希望有所帮助。
答案 1 :(得分:2)
我几乎肯定有一个示例应用程序可以做到这一点。一个更具体的答案即将到来。
更新:iPhoneCoreDataRecipes可能正是您正在寻找的内容。
关于主题,这是最甜蜜的提供方法之一:
// If I want to delete the next 3 cells after the one you click
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableArray* indexPaths = [NSMutableArray array];
for (int i = indexPath.row + 3; i < indexPath.row + 3; i++)
{
[indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]];
}
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
我认为有一种更简单的方法来实现你想要的东西,但这又很容易。唯一的困难可能是删除自己......只要注意段错误。