我是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;
}
我在很多方面对它进行了测试,但我还没有找到解决方案。
答案 0 :(得分:0)
如果您重复使用单元格,首先要考虑在cellForRowAtIndexPath中考虑两种情况:
dequeueReusableCellWithIdentifier
返回一个单元格dequeueReusableCellWithIdentifier
返回nil。在这种情况下,您必须分配一个新单元格。 在这个if块之外(所以当你重新使用一个单元格或新单元格时),你将设置每个元素的值,例如标签和图像。对于您的代码,所有代码都在dequeueReusableCellWithIdentifier
代码行下。
按照其他stackoverflow线程中的内容进行操作:[问题] initWithFrame : reuseIdentifier : is deprecated您将在其中找到if(cell == nil)代码块...
之后如果你还有问题再次发布:)
答案 1 :(得分:0)
下次我首先检查自己的XML文件。一个文件中有白色字符,这是一个问题。