0

私はこのように私のVCUIButtonにセルを持っていますUITableView

arrowBtnUp = [UIButton buttonWithType:UIButtonTypeCustom];
arrowBtnUp.frame = CGRectMake(50,(65-19)/2,31, 31);
[arrowBtnUp setBackgroundImage:[UIImage imageNamed:@"arrow_up.png"] forState:UIControlStateNormal];
[arrowBtnUp addTarget:self action:@selector(slideAction) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:arrowBtnUp];

そしてこれは私のslideAction

-(void) slideAction
{
    [arrowBtnUp setBackgroundImage:[UIImage imageNamed:@"arrow_down.png"] forState:UIControlStateNormal];
    // also tried  with UIControlStateSelected/Highlighted
}

しかし、うまくいきませんでした。このリンクを見つけましたが、役に立ちませんでした。提案やサンプルをいただければ幸いです。

4

5 に答える 5

3

問題はarrowBtnUp、UIButtonのインスタンスを再利用していることです。したがって、このslideActionメソッドでは、押されたボタンの参照を取得できません。

メソッドで参照を取得するには、slideActionそれを引数として渡す必要があります。

したがって、次のようにコードを変更します。

[arrowBtnUp addTarget:self action:@selector(slideAction:) forControlEvents:UIControlEventTouchUpInside];


-(void) slideAction:(UIButton *)myButton
{
   [myButton setBackgroundImage:[UIImage imageNamed:@"arrow_down.png"] forState:UIControlStateNormal];
}
于 2012-11-21T11:58:08.657 に答える
1

タッチ後にボタン イメージを変更しようとしている場合は、UIButton のコントロール状態を使用する必要があります。各「状態」に背景画像を割り当て、UIButton に表示する画像を決定させることができます。

于 2013-06-14T10:29:11.297 に答える
0

背景画像はボタンのアイコンとは異なります。代わりにこれを試してください:

[_buttonConfirm setImage:[UIImage imageNamed:@"s.png"] forState:UIControlStateNormal];
于 2012-11-21T11:59:05.707 に答える
0

タッチ後にボタン イメージを変更しようとしている場合は、UIButton のコントロール状態を使用する必要があります。各「状態」に背景画像を割り当て、UIButton に表示する画像を決定させることができます。

[myButton setBackgroundImage:[UIImage imageNamed:@"arrow_up.png"] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"arrow_down.png"] forState:UIControlStateSelected];

slideAction: ターゲット メソッドで背景画像を手動で切り替える必要はありません。

于 2012-11-21T12:09:13.490 に答える