我在IB中创建了一个自定义UITableViewCell。我有一个名为CheckMarkButton的自定义UIButton,我在IB中添加了它,背景图片为“unchecked.png”(没有复选标记的空框)。
当我在TableView中使用此单元格时,在cellForRowAtIndexPath中,我为按钮添加了一个目标:
cell.CheckMarkButton addTarget:self action@selector(CheckmarkButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
然后是选择器:
- (void)CheckmarkButtonPressed:(id)sender {
UIButton *theButton = (UIButton *)sender;
theButton.selected = !theButton.selected;
[theButton setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateSelected];
}
所以这部分按预期工作。现在我有一个从节头调用的另一个方法,我检查或取消选中该节中的所有TableView行。在我访问单元格后,我尝试将按钮设置为选中以显示已选中
cell.CheckMarkButton.selected = YES;
通过此声明,我看不到单元格中的复选标记图标发生变化。我究竟做错了什么?感谢。
答案 0 :(得分:0)
您不是在更改背景,只是设置启用的属性。
但总的来说,你只是做错了。不是在选择按钮时手动更改图像,而是应在Interface Builder中为每个状态配置不同的图像。这样,只要您将按钮标记为已选择,图像就会自动更新。