所需的步骤中的tableView添加一行

问题描述:

我的ViewController与TableView中内嵌的,当这个ViwController启动我火NSURLConnection的抢10个从服务器查询第一个结果,这个结果包括简单的图像URL和文本。我将所有内容都存储在mutabelArray中,然后加载图像,然后将所有结果显示在我的tableView中并添加“加载10多个单元格”单元格。所需的步骤中的tableView添加一行

那么问题是,当我尝试再加载10个错误时,“更新之后现有节中包含的行数(12)必须等于更新前该节中包含的行数”出现

[theTableView insertRowsAtIndexPaths:indexes withRowAnimation:UITableViewRowAnimationRight]; 

我读,我必须首先从数据源中添加其他前去除细胞,但如果我从我的数组中删除第10个细胞,我必须去,当用户想要从服务器获取他们回来到scrol到以前的结果......它真的很重,有点stupide -_-'...我敢肯定有一种方法可以简单地新行添加到表视图不会丢失以前的数据。

请,如果有人知道一个很好的和简单的方式或有示例代码,这将真正帮助,我是卡在它由于图4时间:/ THX

嗯,我曾经一个平等的问题和解决它如下:

1)使用的NSMutableArray或的NSMutableDictionary作为数据源为您的tableView代替的NSArray或NSDictionary的

// old 
// NSArray *dataArray = [[NSArray alloc] initWithObjects:@"Object1",...,nil]; 

// new 
NSMutableArray *dataArray = [[NSMutableArray alloc] initWithObjects:@"Object1",...,nil]; 

2)如果你赶上了10分新的结果只是将它们添加到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]; 
+0

以及这种方法的岩石:)但我不知道,如果是赶上这一切的图片在此NSMutableArray的一件好事,试想有100缩略图在这个NsMutableArray中的图片,它会成为一个问题或导致内存警告? – john 2011-03-29 11:06:32

+0

亲爱的约翰,数组是共同的行为来处理UITableViews和他们的数据源,因为你不必有初始化所有的时间临时对象。实际上NSArray不是内存泄漏的问题,而是你的对象和存储在内存中的em的数量。最多可存储100个条目,甚至5000个条目,而不在阵列中的一个问题;) – Lepidopteron 2011-03-29 11:22:03

+0

谢谢你的男人,他能很好:) :) :) – john 2011-03-29 12:10:58