如何将didLoadObjects中的数据传递给cellForRowAtIndexPath

时间:2012-04-13 17:22:59

标签: objective-c arrays storyboard restkit

所以,我正在使用RestKit访问Web服务并从那里检索数据。 到目前为止,我有两个视图,检索数据的部分很好,我得到了我需要的100个对象,将它们保存到一个名为“歌曲”的数组中。

这是didLoadObjects:

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {
    NSLog(@" Reached didLoadObjects: %d", [objects count]);

    self.songs = objects;
    NSLog(@"%@",self.songs);
}

好的,我有两个观点,问题当然是第二个观点。我正在使用Storyboard。我给tableView单元格一个名为“TopListCellIdentifier”的标识符。

所以,我得到了这些对象,其中所有100个都在命令行中“打印”了,但是当我尝试从cellForRowAtIndexPath中的数组中访问数据时,问题就出现了,这是因为我有必要这样做自定义tableViewCell显示我需要的信息(儿子,艺术家,封面,类似的东西)。所以,当我启动应用程序时,第一个视图很好,但第二个视图有100个单元格,但没有信息。这是cellForRowAtIndexPath代码。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *TopListCellIdentifier = @"TopListCellIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TopListCellIdentifier];

    // Loading the Cover Images in the Background
    // Cover Image: Tag 1
    [((HJManagedImageV*)[cell viewWithTag:1]) clear];
    HJManagedImageV* thumbImage = ((HJManagedImageV*)[cell viewWithTag:1]);
    NSString *thumbUrl = [[self.songs objectAtIndex:[indexPath row]] thumbnail];

    thumbImage.url = [NSURL URLWithString:thumbUrl];
    [[ImageHandler sharedHandler].imgManager manage:thumbImage];

    //Song and Artist: Tag 2 and 3
    ((UILabel*)[cell viewWithTag:2]).text = [[self.songs objectAtIndex:[indexPath row]] title];
    ((UILabel*)[cell viewWithTag:3]).text = [[self.songs objectAtIndex:[indexPath row]] artist];

    //Arrow Up/Down/Same: Tag 4
    //TODO

    //Position Number: Tag 5
    ((UILabel*)[cell viewWithTag:5]).text = [NSString stringWithFormat:@"%d.", [indexPath row]+1];

    return cell;
}

我试过将调试器放在cellRow(...)的第一行,但是程序没有进入那里。我觉得我忘记了一些非常简单的事情,但我似乎无法弄清楚是什么。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

你永远不会开始新的细胞。您需要添加如下行:

if (nil == cell)
    cell = [[UITalbeViewCell alloc] init...

致电后

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TopListCellIdentifier];