错误:iPhone SDK 中 UITableView 部分中的行数

Posted

技术标签:

【中文标题】错误:iPhone SDK 中 UITableView 部分中的行数【英文标题】:Error : Number of Rows In Section in UITableView in iPhone SDK 【发布时间】:2011-02-15 06:31:57 【问题描述】:

我在尝试将数据加载到我的表格视图时遇到此错误。

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (73) must be equal to the number of rows contained in that section before the update (71), plus or minus the number of rows inserted or deleted from that section (3 inserted, 0 deleted).

可能出了什么问题?

谢谢

编辑

我正在初始化 ViewWillAppear 上的数组,并在 Tableview 的 didSelectRowAtIndexPath 方法上将新对象添加到同一数组中

这是关于 viewWillAppear 的代码:

     cellTextArray = [[NSMutableArray alloc] init];

[cellTextArray addObjectsFromArray:newPosts];

这是修改 didSelectRowAtIndexPath 上的数组的代码:

       [cellTextArray addObjectsFromArray:newPosts];

       NSMutableArray *insertIndexPaths = [NSMutableArray array];
        for (NSUInteger item = count; item < count + newCount; item++) 

            [insertIndexPaths addObject:[NSIndexPath indexPathForRow:item 
                                                           inSection:0]];
        

        [self.table beginUpdates];
        [self.table insertRowsAtIndexPaths:insertIndexPaths 
                              withRowAnimation:UITableViewRowAnimationFade];
        [self.table endUpdates];

        [self.table scrollToRowAtIndexPath:indexPath 
                              atScrollPosition:UITableViewScrollPositionNone 
                                      animated:YES];

        NSIndexPath *selected = [self.table indexPathForSelectedRow];
        if (selected) 
            [self.table deselectRowAtIndexPath:selected animated:YES];
        

这里 newPosts 是一个数组,其中包含添加到 cellTextArray 上的值 didSelectRowAtIndexPath 方法和 viewWillAppear 方法。

【问题讨论】:

添加您的代码以获得答案!没有人可以假设并回答您的问题。 @Manjunath:我已经编辑了我的问题并添加了代码。请检查一下 添加 [self.table reloadData]; didSelectRowAtIndexPath 方法末尾的行 @Satya:我试过 [self.table reloadData] 但似乎没有帮助。可以做什么? 【参考方案1】:

如果您在初始化后更新了数据数组,那么您可以调用此方法 [yourTable reloadData]。

而且,最好在此处发布代码。那么可能有人可以快速帮助您。

【讨论】:

感谢您的意见。我已经编辑了我的问题并添加了代码。请检查一下。另外,我应该将 [table reloadData] 语句放在我的代码中的什么位置? 请您尝试评论这两行 [self.table beginUpdates];和 [self.table endUpdates]; 我尝试注释掉您上面提到的两行,但似乎没有帮助。有什么问题?【参考方案2】:

我认为,问题在于didSelectRowAtIndexPath 方法中的语句。

您添加了以下语句

[self.table insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationFade];

此语句将新行添加到表中。但是该部分的数据源数组中的行数与该表的该部分中的行数不同。

所以应用程序被终止了。

请尝试删除上述语句并将所需数据添加到所需索引处的数据源数组并重新加载表

问候,

萨提亚

【讨论】:

感谢您的帮助@gypsicoder:感谢您对注释掉 beginUpdates 和 endUpdates 部分的评论确实有所帮助。非常感谢大家!!

以上是关于错误:iPhone SDK 中 UITableView 部分中的行数的主要内容,如果未能解决你的问题,请参考以下文章

iphone sdk 值从给定 exc 错误访问的数组中删除

iPhone SDK 代码签名错误

LinkedIn 邀请 API 错误 401 [未经授权]-iPhone sdk

出现错误'操作无法完成。 (com.facebook.sdk 错误 5.)' 从 iphone 在 facebook 上发布视频时

使用 UIModalTransitionStyleCrossDissolve 进行转换在 IOS Sdk 9.3 中显示 iphone6s 错误

iPhone ARC 和 Facebook SDK