IOS newb尝试使用可重复使用的单元格从表格视图中删除项目。我如何知道我需要删除哪个项目以及如何删除它。数据来自网络调用,单元格有自己的xib / class。我在单元类上放置了一个属性,以便能够获取它们的数据。这是我目前的代码。它在尝试从数据提供程序中删除项目时崩溃。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
if(editingStyle == UITableViewCellEditingStyleDelete){
//find object to be deleted
MessagesCell *curCell = (MessagesCell *)[tableView cellForRowAtIndexPath:indexPath];
for (int i=0;i<[messagesArray count]; i++) {
if ([[CommonAPI checkForNullNumber:curCell.allData[@"id"]] integerValue] ==[[CommonAPI checkForNullNumber:((NSDictionary *)[messagesArray objectAtIndex:i])[@"id"]] integerValue]) {
[messagesArray removeObjectAtIndex:i];
}
}
}
[messagesTable reloadData];
}
它进入remove调用,所以我怀疑它是我的循环,即使必须有更好的方法从dataprovider中查找单元格的数据。无论如何,提前谢谢。
答案 0 :(得分:0)
首先,你要删除和更新对象
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
MyClass * object = [messagesArray objectAtIndex:indexPath.row];
[messagesArray removeObject:object];
[tableView deleteRowsAtIndexPaths:[NSMutableArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
答案 1 :(得分:0)
纽比问题。我在网络调用的响应中从数组字典中实例化了nsMutableArray。所以我将nsmutable数组实例化为NSArray。当你试图改变它中的任何元素时,它会死亡。因此,为了解决这个问题,我正确地实例化了数组。
所以错误的方法是
messagesArray = response[@"data"];
正确的方式
messagesArray = [[NSMutableArray alloc] initWithArray:response[@"data"]];
感谢您的帮助。