2012-09-12 196 views
0

我有一个自定义UITableViewCell,它按预期工作。 除了一个(重要的)细节。自定义UITableViewCell中的复选框取消选择行选择

我的单元格(从Nib加载)包含UIButton(设置为自定义)。 该按钮就像一个复选框。 大多认为复选框被选中时(=选中) 使用自定义图片:

[self.checkboxButton setImage:[UIImage imageNamed:@"check_off"] forState:UIControlStateNormal]; 
[self.checkboxButton setImage:[UIImage imageNamed:@"check_on"] forState:UIControlStateSelected]; 

的问题是:
当我选择我行的复选框(按钮)将自动取消。 我已经遍布我的代码,看看这是从哪里来的,并且 不会将选定的属性设置在复选框的任何位置,但在我的自定义tableviewcell代码中为 。

有趣的部分是:
当我把我的tableviewcell.selectionstyleUITableViewCellSelectionStyleNone一切正常(没有自定义backgrond颜色)。 当我切换到UITableViewCellSelectionStyleGray时,该复选框被自动取消选择。

更新
当我改写setSelected:animated:我的复选框选中撑。

- (void) setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
    // checkbox stays checked as expected 
    NSLog(@"set select with anim"); 
    // when calling super setSelected:animated: checkbox gets unchecked 
    // [super setSelected:selected animated:animated]; 
} 

有一些机制我失踪?
例如,我必须覆盖setSelected:drawRect ...
我已经江郎才尽了如何处理这个虚幻的错误。

谢谢。

+0

你在选择单元格时调用了'reloadData'吗?如果是的话,那可能是你问题的原因。 – janusbalatbat

+0

我在'[[self tableView] reloadData];'中查找并替换了';在我的tableviewcontroller中,现在有一个集中的方法来重新载入tableview的数据。一旦表的数据就位,这个方法就不会再被调用。所以谢谢你的建议,但它似乎不是罪魁祸首。 – Webdevotion

回答

0

看来你取消了复选框tableView:didSelectRowAtIndexPath:方法。

+0

没有,即使有一个空方法体,问题仍然存在。 的#pragma马克 - 表视图代表 - (无效)的tableView:(UITableView的*)的tableView didSelectRowAtIndexPath方法:(NSIndexPath *)indexPath { } – Webdevotion

相关问题