iOS点击“删除”时弹出消息框问是否确定删除,代码怎么写?

 我来答
匿名用户
2019-02-19
展开全部

参考 网页链接

ios 8 开始不使用UIAlertView 改工UIAlertController

思路是 再UIAlertAction的block里进行删除操作 而不是在tableview的UITableViewRowAction里进行删除(如果在这里进行删除操作会导致,数据删完之后才弹框提示) 

最终效果如图:

  1. tableview上点击按钮时的事件

-(NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(nonnull NSIndexPath *)indexPath
{
    //delete
    UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"del" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath)
    {
        [self askalert:indexPath.row tableindex:indexPath];  //在弹出的alertController里面的block里对tableview就行操作
    }];
 
    return @[deleteAction];
}

2. alertController的block

- (void) askalert:(NSInteger)delItemindex tableindex:(nonnull NSIndexPath *)indexPath
{
    __weak __block XYZToDoListTableViewController *tmp = self;
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Tip" message:@"Are you sure?" preferredStyle:UIAlertControllerStyleAlert];
    
    __block UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        if (cancelAction) {
            
        }
    }];
    
    __block UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        if (okAction) {

//列表数组中删除数据
            [tmp.toDoItems removeObjectAtIndex:delItemindex];   

//刷新tableview
            [tmp.tableView beginUpdates];
            [tmp.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
            [tmp.tableView endUpdates];
            [tmp savedata:tmp.toDoItems];  //cunchu
        }
    }];
    [alert addAction:cancelAction];
    [alert addAction:okAction];
    [tmp presentViewController:alert animated:YES completion:nil];
}
xin_lei_0
2012-11-16
知道答主
回答量:6
采纳率:0%
帮助的人:5.9万
展开全部
UIAlertView* alert=[[UIAlertViewalloc]initWithTitle:@"Delete?"message:@"是否删除?" delegate:selfcancelButtonTitle:@"YES"otherButtonTitles:@"NO",nil];
[alert show];
[alert release];
追问
哥们  这个我也会 中看不中用啊
追答
可以用啊,还有点击事件呢

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{
switch (buttonIndex) {
case0: //YES应该做的事
break;
case1://NO应该做的事
break;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式