我添加了uitableview,其中我尝试添加自定义UIButton。使用以下代码成功添加:
image=[UIButton buttonWithType:UIButtonTypeCustom];
image.frame=CGRectMake(240, 7, 25, 25);
image.tag=101;
image2=[UIButton buttonWithType:UIButtonTypeCustom];
image2.frame=CGRectMake(240, 7, 25, 25);
image2.tag=102;
if ([outputlabel.text isEqualToString:@"Yes"]||[outputlabel.text isEqualToString:@"Yes"]) {
[image setImage:[UIImage imageNamed:@"tick.png"] forState:UIControlStateNormal];
[cell1.contentView addSubview:image];
[cell1.contentView bringSubviewToFront:image];
}
else
{
[image2 setImage:[UIImage imageNamed:@"cross.png"] forState:UIControlStateNormal];
[cell1.contentView addSubview:image2];
[cell1.contentView bringSubviewToFront:image2];
}
起初工作正常。当表视图重新加载时,它与uibutton旧图像重叠。我无法用新值刷新整个表。有人知道我在代码中做错了什么。
答案 0 :(得分:2)
更新。始终在 cell == nil 块中为单元格创建内容视图。通过标签在外面使用那个内容视图..然后只有它不会重叠并完全重复使用你的单元格。
if (cell == nil)
{
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIndentifier];
//Add your button here.. set the tag.
UIButton image=[UIButton buttonWithType:UIButtonTypeCustom];
image.frame=CGRectMake(240, 7, 25, 25);
image.tag=101;
}
UIButton *btn = (UIButton *)[cell.contentView viewWithTag:101];
if ([outputlabel.text isEqualToString:@"Yes"]||[outputlabel.text isEqualToString:@"Yes"])
{
[btn setImage:[UIImage imageNamed:@"tick.png"] forState:UIControlStateNormal];
}
else
{
[btn setImage:[UIImage imageNamed:@"cross.png"] forState:UIControlStateNormal];
}
在cellForRowAtIndexPath中这样做..这对你有帮助..
答案 1 :(得分:2)
基本上,如果我们想刷新tableview的内容,那么需要使用这个reloadData。你试过了吗? -
[yourTableView reloadData];
答案 2 :(得分:0)
确保实现-cellForRowAtIndexPath:。然后通过在相关的tableView上调用reloadRowsAtIndexPaths:withRowAnimation:来刷新tableViewCells。 tableView将依次调用cellForRowAtIndexPath,你只需返回那里配置的单元格。
如果您有静态单元格,只需将控件连接到IBOutlet即可轻松访问需要更改的内容。
答案 3 :(得分:0)
尝试使用
刷新单元格的视图[cell1.contentView setNeedsDisplay:TRUE];
每次设置图像。
答案 4 :(得分:0)
我怀疑您是在-tableView:cellForRawAtIndexPath:
方法中添加此图片。
首先 - 如果您重复使用具有一些重用标识符的单元格,Cell将保留在内存中并在需要时重用。这意味着您的单元格的所有子视图都将被保留。在这种情况下,您需要准备单元格以便每次重复使用。例如 - 删除单元格的所有子视图。
但更好的方法是,我建议在操作次数较少的情况下 - 创建UITableViewCell的子类并将UIButton添加为该单元格的属性。
然后您只需要根据您的情况更改此属性。
if ([outputlabel.text isEqualToString:@"Yes"]) {
[cell1.button setImage:[UIImage imageNamed:@"tick.png"] forState:UIControlStateNormal];
}
else
{
[cell1.image setImage:[UIImage imageNamed:@"cross.png"] forState:UIControlStateNormal];
}
当然,必须在Cell初始化器中的cell.contentView中添加按钮。通常是自定义单元格.m文件的方法-initWithStyle:reuseIdentifier:
。