【发布时间】:2015-04-21 09:16:20
【问题描述】:
当我尝试在请求的成功块中删除 UITableViewCell 时出现问题。
在我的
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
我正在向 AFNetworking 提出请求
- (NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(id)parameters
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
在成功阻止之后,我通过关闭 SVProgressHUD 并删除单元格来更新 UI:
NSUserDefaults *usd = [NSUserDefaults standardUserDefaults];
[usd removeObjectForKey:@"payViaCreditCard"];
selectedCardID = nil;
[[CreditCardManager sharedCreditCardManager] removeCreditCard:creditCardToDelete];
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView reloadData];
最后,当我重新启动应用程序时,我的 UI 没有更新并且应用程序冻结,NSUserDefaults 中的数据发生了变化。
【问题讨论】:
-
与您的问题无关,但在
deleteRowsAtIndexPaths之后调用reloadData是没有意义的。 -
删除
reloadData,你应该很高兴。 -
我的 UITableView 总是有一个复选标记,所以在 reloadData 之后,如果 UITableViewCell 删除了复选标记,默认情况下第一个单元格将具有复选标记。
标签: ios objective-c uitableview afnetworking