Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从iOS 4中的UITableView和支持数据源中删除_Objective C_Uitableview_Ios4 - Fatal编程技术网

Objective c 从iOS 4中的UITableView和支持数据源中删除

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

在阅读了苹果的文档并搜索了谷歌之后,我有点被这个问题难住了。问题的要点是,我知道我需要从UITableView和数据源(在本例中为NSMutableArray)中删除,但无论以何种顺序执行,它都不允许我这样做

- (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编程指南。您似乎对行/节之间的差异以及删除部分行/节后表如何更新有些困惑。