Cocoa touch 未调用UITableViewCell setSelected方法

Cocoa touch 未调用UITableViewCell setSelected方法,cocoa-touch,ios7,uitableview,uistoryboard,Cocoa Touch,Ios7,Uitableview,Uistoryboard,我在iOS7上,有一个UITableViewCell子类用于我的UITableView和静态单元格。我在实现中重写setSelected方法 出于某种原因,该方法仅在加载表时调用,而在实际点击并选择单元格时不会调用 我做错了什么?我如何让它工作 @implementation StudentMenuMultipleOptionsTableViewCell - (void)setSelected:(BOOL)selected { [super setSelected:selected];

我在iOS7上,有一个UITableViewCell子类用于我的UITableView和静态单元格。我在实现中重写setSelected方法

出于某种原因,该方法仅在加载表时调用,而在实际点击并选择单元格时不会调用

我做错了什么?我如何让它工作

@implementation StudentMenuMultipleOptionsTableViewCell

- (void)setSelected:(BOOL)selected {
    [super setSelected:selected];
    if (selected) {
        UIView *view = [UIView new];
        view.backgroundColor = [UIColor colorWithRed:0.542 green:0.788 blue:0.060 alpha:1.000];
        self.selectedBackgroundView = view;
    }
    else {
        for (UIView *view in self.subviews) {
            if ([view isKindOfClass:[BlackBackgroundSelectedButton class]]) {
                BlackBackgroundSelectedButton *button = (BlackBackgroundSelectedButton *)view;
                button.selected = NO;
                [button setWhite];
            }
        }
    }
}

@end

问题是我使用的是setSelected方法。较新的iOS版本需要使用的方法是:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated;

你能分享你的代码吗?用代码编辑的问题在你的情况下可能会起到修复作用,但你的语句不是真的-setSelected()有动画和非动画函数版本,你上面提到的调用非动画版本来做这项工作。。。它只是在调用周围添加了一层动画。我正在调试一个类似的问题,可能与此相关-我的setSelected函数被调用,但总是带有NO的值。。。这毫无意义。我很确定setSelected是一个内部方法,不应该被重写。这看起来像是要重写的指定方法。苹果也为其他UIButton元素(如UIButton)提供了这一功能。执行UIButtonInstance.titleLabel.text=@“XYZZ”,您将看到按钮的行为异常。您必须使用[UIButtonInstance setTitle:@“xyzz”forControlState:UIControlStateNormal]才能使其表现出应有的行为。setSelected()与其他任何方法一样是一个公共方法,在需要时重写其行为-这就是对象定向和多态性的全部内容,是通过子类化对象来定制行为的一种方法。棘手的一点是找到合适的位置,以适当的方式覆盖行为。我从来没有说过你不能覆盖“setSelected”方法,只是你不应该覆盖这个特殊的情况。您将在开发人员文档中看到,这是一个未记录的API,“selected”属性仅用于检查单元格的当前选定状态。抱歉,我不同意-它是一个记录的API调用/属性。。。但毫无疑问,我会在几周后从我们的Appstore评论中发现这一点。