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

UIButtonselectedプロパティを使用することになりました。それは何も必要とせず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 に答える