Objective c 从iOS 4中的UITableView和支持数据源中删除
在阅读了苹果的文档并搜索了谷歌之后,我有点被这个问题难住了。问题的要点是,我知道我需要从UITableView和数据源(在本例中为NSMutableArray)中删除,但无论以何种顺序执行,它都不允许我这样做Objective c 从iOS 4中的UITableView和支持数据源中删除,objective-c,uitableview,ios4,Objective C,Uitableview,Ios4,在阅读了苹果的文档并搜索了谷歌之后,我有点被这个问题难住了。问题的要点是,我知道我需要从UITableView和数据源(在本例中为NSMutableArray)中删除,但无论以何种顺序执行,它都不允许我这样做 - (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPa
- (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[myMutableObjectList removeObjectAtIndex:indexPath.row];
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
// not used
}
}
无论我对这两个项目使用哪种顺序:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[myMutableObjectList removeObjectAtIndex:indexPath.row];
它要么抱怨剩下多少元素,要么说删除没有发生
“(Count)删除前必须匹配(Count)删除后减去已删除的数量0插入1删除”
使用[tableView…]时,首先它表示计数与希望发生的1次删除相同
使用[myMutableObjectList…]时,它首先表示计数减少1(很好!),但希望发生0次删除
如果两种方法都不行,我该怎么办
更新:
您的numberOfRowsInSection与您想要的行为不匹配。它永远不会反映对数据存储的更改
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if([myMutableObjectList count] == 0) {
return section;
} else {
return 4; //4 variables in myObject
}
}
你为什么要回到这里来。我想象您想要返回[myMutableObjectList count]
此方法需要反映所有单元格的当前计数。执行删除操作时,可以从
myMutableObjectList
中删除对象,但该更改不会影响numberOfRows方法的结果。您的numberOfRowsInSection与您要执行的行为不匹配。它永远不会反映对数据存储的更改
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if([myMutableObjectList count] == 0) {
return section;
} else {
return 4; //4 variables in myObject
}
}
你为什么要回到这里来。我想象您想要返回[myMutableObjectList count]
此方法需要反映所有单元格的当前计数。当您执行删除操作时,您从
myMutableObjectList
中删除了一个对象,但该更改不会影响numberOfRows方法的结果。我们可以看到您的NumberForrowsInstruction方法吗?在原始帖子中为您添加了该方法。我正在使用的NSMutableArray是一个包含4个变量的“MyObject”列表。我们可以看到您的NumberForrowsInstruction方法吗?在原始帖子中为您添加了该方法。我使用的NSMutableArray是一个包含4个变量的“myObject”列表。我很好奇!显然,他也是iPhone开发的新手!想详细说明一下吗?让我猜猜,我应该在numberOfRowsInSection方法中检查数组的大小?我认为节是列表中的单个项目,行是节中的项目?为了清晰起见,添加了另一种方法。谢谢对不起,我已经用我的iPhone回答了,这就是为什么它这么短的原因。用更恰当的答案修正。@Joshua Weinberg感谢您的帮助!不幸的是,在更改方法后,我仍然收到错误:--由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:无效的节数。”。更新后表视图中包含的节数(73)必须等于更新前表视图中包含的节数(74),加上或减去插入或删除的节数(0插入,0删除)。'后退一步,看看你在做什么。另请阅读tableview编程指南。您似乎对行/节之间的差异以及删除部分行/节后表如何更新有些困惑。我很好奇!显然,他也是iPhone开发的新手!想详细说明一下吗?让我猜猜,我应该在numberOfRowsInSection方法中检查数组的大小?我认为节是列表中的单个项目,行是节中的项目?为了清晰起见,添加了另一种方法。谢谢对不起,我已经用我的iPhone回答了,这就是为什么它这么短的原因。用更恰当的答案修正。@Joshua Weinberg感谢您的帮助!不幸的是,在更改方法后,我仍然收到错误:--由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:无效的节数。”。更新后表视图中包含的节数(73)必须等于更新前表视图中包含的节数(74),加上或减去插入或删除的节数(0插入,0删除)。'后退一步,看看你在做什么。另请阅读tableview编程指南。您似乎对行/节之间的差异以及删除部分行/节后表如何更新有些困惑。