操作表上的表行数据删除删除按钮按下

时间:2014-09-30 07:30:46

标签: ios objective-c uitableview

我想在按下操作表删除按钮时删除表格行,然后我写一个像这样的代码

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UIActionSheet *action=[[UIActionSheet alloc]initWithTitle:@"Are You Sure" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Delete", nil];
        [action showInView:self.view];
    }
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
    {
    NSString *buttontitle=[actionSheet buttonTitleAtIndex:buttonIndex];
    if ([buttontitle isEqualToString:@"Delete"])
    {
        [self.map removeObjectAtIndex:indexpath.row];
        //tableView is global object of your table view.
        [tableView reloadData];
    }

    }

但错误是'Undeclare identifier indexpath'

2 个答案:

答案 0 :(得分:0)

因为这里你的indexPath变量是你的方法的本地变量,所以你不能将它访问到另一个方法。

为此,您应该创建一个全局变量并将该索引路径保存在该变量中,然后随意访问它。

或者将标记设置为您的操作表,然后访问它。

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UIActionSheet *action=[[UIActionSheet alloc]initWithTitle:@"Are You Sure" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Delete", nil];
        //set the index path as tag to action sheet.
        action.tag = indexPath.row;
        [action showInView:self.view];
    }
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
    {
    NSString *buttontitle=[actionSheet buttonTitleAtIndex:buttonIndex];
    if ([buttontitle isEqualToString:@"Delete"])
    {
        //access that tag here.
        [self.map removeObjectAtIndex:action.tag];
        //here your tableView is global variable
        [tableView reloadData];
    }

    }

答案 1 :(得分:0)

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

您没有要删除的行的索引路径。您必须从表视图中获取它或保存

传递的索引路径
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

并在操作表回调中重复使用它。

总而言之,您的方法似乎没有利用API。 UITableViewDelegate具有允许用户查看“删除”按钮并按下或取消它的方法。我建议您检查一下,以便您的应用程序能够像其他iOS应用程序一样工作。

tableView:willBeginEditingRowAtIndexPath:

tableView:editingStyleForRowAtIndexPath:

tableView:titleForDeleteConfirmationButtonForRowAtIndexPath: