我正在使用UITableView显示有关驾驶快速后果的一些信息:罚款将会是什么等等。我还会使用驾驶执照中的一些红色“点”。由于每行可以在0到6之间,我已经完成了以下操作:
- (UITableViewCell *)tableView:cellForRowAtIndexPath:
// Code if no cell is available in the que
// End of that code
UIImage *seniorImage = [UIImage imageNamed:@"ticket_dot.png"];
if (seniorDots == 0) {
} else {
for (int i = 0; i < seniorDots; i++) {
UIImageView *seniorImageView = [[UIImageView alloc] initWithFrame:CGRectMake(40.0 + (i * 15.0), 40.0, 15.0, 40.0)];
seniorImageView.image = seniorImage;
seniorImageView.contentMode = UIViewContentModeCenter;
[cell.contentView addSubview:seniorImageView];
[seniorImageView release];
}
}
seniorDots是我从plist文件中获取的变量。代码按预期工作,但您可能会看到我无法删除它们。所以我第一次打开tableview时会看到预期的视图,但如果我再次向上滚动代码,只需在单元格上添加UIImageViews,而不是删除旧的。如何在添加新点之前引用这些点以将其从屏幕中删除?
答案 0 :(得分:2)
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIImageView *imgView;
if(cell == nil)
{
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
imgView = [[UIImageView alloc] initWithFrame:CGRectMake(100,0,100,62)];
[imgView setImage:[UIImage imageNamed:@"img.png"]];
imgView.tag = 55;
[cell.contentView addSubview:imgView];
[imgView release];
}
else
{
imgView = (id)[cell.contentView viewWithTag:55];
}
答案 1 :(得分:1)
您可以将以下代码放在cellForRowAtIndexPath方法中:
//删除其他数据
for (UIImageView *img in cell.contentView.subviews) {
if ([img isKindOfClass:[UIImageView class]]) {
[img removeFromSuperview];
}
}
我希望它会对你有所帮助。如果遇到任何困难,请告诉我。