0

我在每个单元格中都有一个UITableViewCellwith 。UIButton当按钮被按下时,我将其状态设置为突出显示,就像在这个答案中一样:

[self performSelector:@selector(doHighlight:) withObject:[cell.subviews objectAtIndex:2] afterDelay:0.0];

然后我这样做:

- (void)doHighlight:(UIButton *)sender {

    if (sender.highlighted) {
        [sender setHighlighted:NO];
    } else {
    [sender setHighlighted:YES];
    }
}

但是该按钮不仅根本没有突出显示,也没有谈到我应该能够取消突出显示它的事实。

关于什么是错的任何想法?

4

2 回答 2

1

我最终使用了UIButton'sselected属性。它不需要任何delay东西,并且可以很好地处理这种类型的事情:

if (!sender.selected) {
    [sender setSelected:YES];
    [cell addSubview:hiddenButton];
    [self performSelector:@selector(doHighlight:) withObject:sender];
} else {
    [sender setSelected:NO];
    [self performSelector:@selector(doUnHighlight:) withObject:sender];
}
于 2013-02-11T12:51:08.067 回答
0

这是您正在寻找的可能的解决方案。我修改了我的答案

 UIButton *button=[cell.subviews objectAtIndex:2];

//I am adding these five lines to ensure the different 
//states of the button to achieve your highlighted state goal. 

UIImage *highlightImage = [UIImage imageNamed:@"highlight.png"];//Also used  when button is selected
UIImage *normalImage = [UIImage imageNamed:@"normal.png"];
[button setBackgroundImage:normalImage forState:(UIControlStateHighlighted)];
[button setBackgroundImage:highlightImage forState:(UIControlStateSelected)];
[button setBackgroundImage:normalImage forState:UIControlStateNormal];

 [self performSelector:@selector(doHighlight:) withObject:[cell.subviews objectAtIndex:2]];

-(IBAction) doHighlight:(id)sender
{
    if ([sender isKindOfClass:[UIButton class]])
    {
        UIButton *btn=(UIButton*)sender;
        if (btn.isSelected) {
            [btn setSelected:NO];
        }
        else
        {
            [btn setSelected:YES];
        }
    }
}
于 2013-02-07T14:12:50.090 回答