我有嵌入了TableView的ViewController。当这个ViwController启动时,我触发一个NSURLConnection并从服务器获取10个第一个结果,这个结果只包含一个图像网址和一个文本。我将所有内容存储在mutabelArray中并加载图像,然后在我的tableView中显示所有这些结果,并添加“load 10 more cell”单元格。
问题是,当我尝试再加载10个时,错误“更新后现有部分中包含的行数(12)必须等于更新前该部分中包含的行数”
[theTableView insertRowsAtIndexPaths:indexes withRowAnimation:UITableViewRowAnimationRight];
我读到我必须首先删除单元格才能从DataSource中添加其他单元格,但如果我从我的数组中删除前10个单元格,我必须从用户想要向上滚动到服务器时将它们从服务器上取回以前的结果......它真的很重,有点愚蠢-_-'...我确信有一种方法可以在表格视图中添加新行而不会丢失以前的数据。
如果有人知道一个简单明了的方法或者有示例代码,那真的会有所帮助,我会坚持4个小时:/ THX
答案 0 :(得分:0)
好吧,我曾经遇到过同样的问题并解决了以下问题:
1)使用NSMutableArray或NSMutableDictionary作为tableView的数据源而不是NSArray或NSDictionary
// old
// NSArray *dataArray = [[NSArray alloc] initWithObjects:@"Object1",...,nil];
// new
NSMutableArray *dataArray = [[NSMutableArray alloc] initWithObjects:@"Object1",...,nil];
2)如果你赶上十个新结果,只需将它们添加到dataArray
// Possibility 1:
for (Result *r in resultSet)
{
[dataArray addObject:r]
}
// Possibility 2:
[dataArray addObjectsFromArray:resultSet];
3)现在重新加载你的桌子:
NSMutableIndexSet *indexes = [NSMutableIndexSet indexSet];
[indexes addIndex:0];
[indexes addIndex:1];
[self.myTable reloadSections:indexes withRowAnimation:UITableViewRowAnimationRight];