将两个图像添加到一个表格视图单元格

时间:2012-07-25 07:48:56

标签: objective-c uitableview

我是Objective-c编程的新手,我正在编写使用XML文件作为数据源的应用程序。我用init获得了课程分数:

- (id)initWithPlayer1Name:(NSString *)name1 Player2Name:(NSString *)name2 Player1Url:(NSString *)url1 Player2Url:(NSString *)url2 Player1FrameScore:(NSString *)frame1 Player2FrameScore:(NSString *)frame2 Player1InFrameScore:(NSString *)score1 Player2InFrameScore:(NSString *)score2
{
    if(self = [super init])
    {
        self.name1 = name1;
        self.name2 = name2;
        self.url1 = url1;
        self.url2 = url2;
        self.image1 = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url1]]];
        self.image2 = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url2]]];
        self.frame1 = frame1;
        self.frame2 = frame2;
        self.score1 = score1;
        self.score2 = score2;
    }
    return self;
}

我想在表格视图中显示分数列表。当应用程序启动时,我的自定义单元格显示一些示例数据和表格视图(显示2个名称和每行中得分类的2个图像)正常工作。当我从XML更新数据时,问题就出现了(我正在使用XMLParser - 效果很好)。播放器名称已更新,但图像消失。在其他表视图中,我有自定义单元格中的玩家列表,但只有一张图片,它可以正常工作。

以下是得分表视图类的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"ScoresCell";
    ScoresCell *cell = (ScoresCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil)
    {
        cell = (ScoresCell*) [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    Score *score = [self.scores objectAtIndex:indexPath.row];
    cell.player1Name.text = score.name1;
    cell.player1Image.image = score.image1;
    cell.player2Name.text = score.name2;
    cell.player2Image.image = score.image1;
    return cell;
}

我在很多方面对它进行了测试,但我还没有找到解决方案。

2 个答案:

答案 0 :(得分:0)

如果您重复使用单元格,首先要考虑在cellForRowAtIndexPath中考虑两种情况:

  1. dequeueReusableCellWithIdentifier返回一个单元格
  2. dequeueReusableCellWithIdentifier返回nil。在这种情况下,您必须分配一个新单元格。
  3. 在这个if块之外(所以当你重新使用一个单元格或新单元格时),你将设置每个元素的值,例如标签和图像。对于您的代码,所有代码都在dequeueReusableCellWithIdentifier代码行下。

    按照其他stackoverflow线程中的内容进行操作:[问题] initWithFrame : reuseIdentifier : is deprecated您将在其中找到if(cell == nil)代码块...

    之后如果你还有问题再次发布:)

答案 1 :(得分:0)

下次我首先检查自己的XML文件。一个文件中有白色字符,这是一个问题。