UIActionSheet,在继续之前获取clickedButtonIndex?

时间:2012-07-09 16:39:26

标签: iphone uiactionsheet objective-c-category

我想要做的是在UITableView上,用户滑动一行以显示删除选项,一旦按下删除,然后弹出UIActionSheet以确保他们想删除该行,因为它比表中的典型行。根据他们按下的内容,我可以从数据库中删除该行中的数据。如何将该行的indexPath放入UIActionSheet中?如果我有一个部分表,那么我可以使用该行的标记并重新创建indexPath,但是有多个部分,如何做到这一点?

似乎可以通过在我的

中使用分类或类似内容来获得更好的方法
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

方法,我可以删除那里的行。或者有没有办法从UIActionSheet传回信息?谢谢!

3 个答案:

答案 0 :(得分:0)

-tableView:commitEditingStyle:forRowAtIndexPath:中,您可以将indexPath存储为属性/ ivar,然后显示ActionSheet

当用户确认删除时,只需删除数据(您已存储indexPath!)并从表格视图中删除单元格(-deleteRowsAtIndexPaths:withRowAnimation:-reloadData)。不要忘记保留/释放indexPath

答案 1 :(得分:0)

有几件事:

  1. 我不会使用UIActionSheet,我会使用UIAlertView。
  2. 可以将“已编辑”删除的行设置为selectedRow。
  3. 如果用户选择“是”并继续删除该行按钮,则可以调用
  4. UITableView对象上的

    [indexPathForSelectedRow]方法。无需保存其他NSIndexPath对象或记住状态。 TableView已经为您做到了。

答案 2 :(得分:0)

我通过设置actionSheet = indexpath.row

的标记作弊
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    // If row is deleted, remove it from the list.
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        UIActionSheet *registerActionSheet = [[UIActionSheet alloc] initWithTitle:@"Sure You Want To Delete?"delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:ACTION_SHEET_DELETE_BUTTON_TITLE otherButtonTitles: nil];
        registerActionSheet.tag = indexPath.row;
        registerActionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
        [registerActionSheet showInView:self.view];
    }
}

然后

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
    if ([[actionSheet buttonTitleAtIndex:buttonIndex] isEqualToString:ACTION_SHEET_DELETE_BUTTON_TITLE]) {

         //do deleting stuff here using actionSheet.tag as index

    }

}

编辑:刚刚看到你正在使用的多个部分的细微之处。通过向它添加indexPath属性来扩展UIActionSheet会对你的情况有所帮助吗?

或将标签设置为'x'数字,前半部分表示部分,后半部分表示行。