我想在按下操作表删除按钮时删除表格行,然后我写一个像这样的代码
-(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'
答案 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: