2012-07-09 72 views
0

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

好像有可能是由具有categoroy什么更好的方法,以便在我

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

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

回答

0

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

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

0

几件事情:

  1. 我不会用一个UIActionSheet,我会用一个UIAlertView中。
  2. 被删除的行被“编辑”可以被设置为selectedRow。
  3. 如果用户选择“是”继续并删除该行按钮,然后就可以调用的UITableView对象的

[indexPathForSelectedRow]方法。无需保存额外的NSIndexPath对象或记住状态。 TableView已经为你做了。

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'位数,前半部分表示部分,后半部分表示行。

相关问题