我有一个UITableView,我从UIWebView下载了文件。在我的更改之前,删除行以及从中下载行的本地文件夹没有问题。
从那时起,我实现了一个多选功能。按编辑,选择w / e文件,按删除显示操作表正常。但对于我的生活,我无法弄清楚如何使行动表处理删除行动。
下面我将发布我正在使用的代码。
//viewDidLoad:
self.deleteButton = [[UIBarButtonItem alloc] initWithTitle:@"Delete" style:UIBarButtonItemStyleBordered target:self action:@selector(deleteButton:)];
- (void)deleteButton:(id)sender
{
NSString *actionTitle = ([[self.tableView indexPathsForSelectedRows] count] == 1) ?
@"Are you sure you want to remove this item?" : @"Are you sure you want to remove these items?";
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:actionTitle delegate:self cancelButtonTitle:@"Cancel"
destructiveButtonTitle:@"OK" otherButtonTitles:nil];
actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[actionSheet showInView:self.view];
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete){
NSString *fileName = [directoryContents objectAtIndex:indexPath.row];
NSString *path;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"downloads"];
path = [path stringByAppendingPathComponent:fileName];
NSError *error;
//Remove cell
[directoryContents removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
//[tableView reloadData];
if ([[NSFileManager defaultManager] fileExistsAtPath:path]) //Does file exist?
{
if (![[NSFileManager defaultManager] removeItemAtPath:path error:&error]) //Delete it
{
NSLog(@"Delete file error: %@", error);
}
}
}
}
有关如何链接“确定”按钮以完成删除的任何信息将非常感激。
答案 0 :(得分:1)
您必须实现UIActionSheet委托方法
actionSheet:didDismissWithButtonIndex:
将完美运作
修改
在UIActionSheet委托方法中添加setEditing:YES
只会将tableView置于编辑模式,而不是提交删除。我不知道如何检索要删除的行,但编辑模式只允许选择一行。
我认为你想要完成的事情可能更好的是操纵你的didSelectRowAtIndexPath
方法来标记每一行的删除,并将选定的索引添加到数组中,或者用勾选标记来标记行。 / p>
然后在UIActionSheet
委托方法中,当用户点击“确定”时,放置删除逻辑,使用indices数组或遍历单元格以查找您选择删除的那些。
我会尝试这样做,因为正如您所经历的那样,自定义删除按钮和commitEditingStyle
协议方法难以链接,因为调用此方法的方式。
答案 1 :(得分:0)
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == actionSheet.destructiveButtonIndex)
{
//Delete
[yourCell setEditing:YES animated:YES];
}
}