我有一个程序通过在NSMutableArray中存储项来解析Web服务中的xml,该程序初始化如下:
- (id)init {
self = [super init];
if (self)
{
items = [[NSMutableArray alloc] init];
}
return self;
}
我已经使用ScrollView委托来检查用户何时触及tableview的底部,我在其中调用Web服务的另一个页面以在已经获取的项目的底部加载更多项目。
但是当重新加载tableview时,它不会在已经获取的项目的底部添加新项目,而只会显示新项目。
在我可以使用动画设置insertrowsatindexpaths之前,我相信NSMutableArray会再次初始化,这会使旧条目消失并仅显示新条目。我怎样才能使NSMutableArray只初始化一次,所以当它获取新条目时,它会在可变数组中已经获取的条目之后加载它们。
修改
根据评论,看起来我对MutableArray做得很好,并且只进行了一次初始化。然后数据源一定有问题。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [[channelFeed items] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
ItemsViewCell *cell = (ItemsViewCell *)[tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"];
if (cell == nil) {
cell = [[ItemsViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"UITableViewCell"];
}
FeedItem *item = [[channelFeed items] objectAtIndex:[indexPath row]];
cell.titleLabel.text = [item title];
cell.pubDateLabel.text = [item pubDate];
cell.creatorLabel.text = [item creator];
[[cell thumbImage] setImage:[item thumbnail]];
return cell;
}
答案 0 :(得分:3)
我会在一个更方便的地方初始化数组。显然,您的代码调用init,它将初始化数组并删除其内容。