我想要做的是在UITableView上,用户滑动一行以显示删除选项,一旦按下删除,然后弹出UIActionSheet以确保他们想删除该行,因为它比表中的典型行。根据他们按下的内容,我可以从数据库中删除该行中的数据。如何将该行的indexPath放入UIActionSheet中?如果我有一个部分表,那么我可以使用该行的标记并重新创建indexPath,但是有多个部分,如何做到这一点?
似乎可以通过在我的
中使用分类或类似内容来获得更好的方法- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
方法,我可以删除那里的行。或者有没有办法从UIActionSheet传回信息?谢谢!
答案 0 :(得分:0)
在-tableView:commitEditingStyle:forRowAtIndexPath:
中,您可以将indexPath
存储为属性/ ivar,然后显示ActionSheet
。
当用户确认删除时,只需删除数据(您已存储indexPath
!)并从表格视图中删除单元格(-deleteRowsAtIndexPaths:withRowAnimation:
或-reloadData
)。不要忘记保留/释放indexPath
。
答案 1 :(得分:0)
有几件事:
[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'数字,前半部分表示部分,后半部分表示行。