删除UITableViewCell后,应用程序冻结 [英] App freezes after deleting UITableViewCell

查看:278
本文介绍了删除UITableViewCell后,应用程序冻结的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试在请求的成功块中删除 UITableViewCell 时出现问题.

There is a problem when I try to delete UITableViewCell in success block of the request.

在我的

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

我正在通过AFNetworking进行请求

I am making request with AFNetworking

- (NSURLSessionDataTask *)POST:(NSString *)URLString
                    parameters:(id)parameters
                       success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
                       failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure

在此之后,我通过关闭SVProgressHUD并删除单元格来更新UI:

After that in success block I am updating UI by dismissing SVProgressHUD and deleting cell:

NSUserDefaults *usd = [NSUserDefaults standardUserDefaults];
[usd removeObjectForKey:@"payViaCreditCard"];
selectedCardID = nil;

[[CreditCardManager sharedCreditCardManager] removeCreditCard:creditCardToDelete];
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView reloadData];

最后,我的用户界面没有更新并且应用程序冻结,当我重新启动应用程序时,NSUserDefaults中的数据已更改.

In the end my UI not updating and app freezes, when I relaunch the app the data in NSUserDefaults changed.

推荐答案

如果您执行deleteRowsAtIndexPaths:withRowAnimationtableView reloadData,那会很好.

It would be good if you do either deleteRowsAtIndexPaths:withRowAnimation or tableView reloadData.

    [[CreditCardManager sharedCreditCardManager] removeCreditCard:creditCardToDelete];
    [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

    OR 

    [[CreditCardManager sharedCreditCardManager] removeCreditCard:creditCardToDelete];
    [self.tableView reloadData];

这篇关于删除UITableViewCell后,应用程序冻结的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆