1

我有一个程序通过将项目存储在 NSMutableArray 中来解析来自 Web 服务的 xml,该 NSMutableArray 初始化如下:

- (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;
}
4

1 回答 1

3

我会在更方便的地方初始化数组。显然,您的代码调用了 init,它将重新初始化数组并删除其内容。

于 2012-12-30T04:04:22.050 回答