14

その時にボタンをタッチすると画像を変更したいのですが、タッチボタンを離すと画像はそのままです。

以下のコードを適用したいのですが、期待どおりではありません。

何か提案をお願いします.....

   -(IBAction)actionEnter:(id)sender{
            if ([sender isSelected]) {
                [sender setImage:[UIImage imageNamed:@"enter-hover.png"] 
                        forState:UIControlStateNormal];
                [sender setSelected:NO];
            } else {
                [sender setImage:[UIImage imageNamed:@"enter.png"] 
                        forState:UIControlStateSelected];
                [sender setSelected:YES];
            }
4

6 に答える 6

14

これにはUIControlStateHighlightedを使用できます。

[myButton setImage:[UIImage imageNamed:@ "enter-hover.png"]
          forState:UIControlStateHighlighted];

画像をハイライト状態に設定することで、InterfaceBuilderからこれを設定することもできます。

于 2011-04-18T06:47:43.170 に答える
6

私はこれがそれをするべきだと思います。ボタンを作成した後に画像を設定します

[yourButton setImage:[UIImage imageNamed:@"enter-hover.png"] 
            forState:UIControlStateSelected];
[yourButton setImage:[UIImage imageNamed:@"enter.png"]  
            forState:UIControlStateNormal];

そしてこれを行う

- (IBAction)actionEnter:(id)sender{
    UIButton *button = (UIButton *)sender;
    button.selected = !button.selected;
}
于 2011-04-18T06:51:11.873 に答える
2

Swiftの場合:

button.setImage(UIImage(named: "enter.png"), forState: [.Selected, .Highlighted])

于 2016-06-20T20:04:40.487 に答える
1

最初に画像を通常の選択状態に設定できると思います。

UIButtonオブジェクトを作成するときは、以下を試してください。[必要に応じて画像を使用してください]

[myButton setImage:[UIImage imageNamed:@"enter.png"] 
          forState:UIControlStateNormal];
[myButton setImage:[UIImage imageNamed:@"enter-hover.png"] 
          forState:UIControlStateSelected];
于 2011-04-18T06:48:03.383 に答える
0

@7KV7は私に考えさせました。お気に入りの写真や二度と見たくない写真をマークするために使用したいお気に入りのボタンと無視するボタンがあります。私は彼のメソッドを使用してボタンを初期化し、次に彼のメソッドを少し変更してボタンのオンとオフを切り替えました。

この例では、写真をお気に入りとしてマークする場合、無視ボタンをオフにします。その逆も同様です。デリゲートはデータベースのものを処理します。

 self.favoriteButton = [UIButton buttonWithType:UIButtonTypeCustom];
        self.ignoreButton   = [UIButton buttonWithType:UIButtonTypeCustom];

        [self.favoriteButton setImage:[UIImage imageNamed:@"Favorite-Selected"] 
                             forState:UIControlStateSelected];
        [self.favoriteButton setImage:[UIImage imageNamed:@"Favorite"] 
                             forState:UIControlStateNormal];

        [self.ignoreButton setImage:[UIImage imageNamed:@"Ignore-Selected"] 
                           forState:UIControlStateSelected];
        [self.ignoreButton setImage:[UIImage imageNamed:@"Ignore"] 
                           forState:UIControlStateNormal];

ボタンのオンとオフを切り替えるだけの場合は、buttonPressed送信者がどのボタンが押されたかを認識しているため、プロパティにする必要はありません。反対側のボタンにハイライトをオフにするように指示する必要があるため、これらをプロパティにする必要があります。

- (void)favoriteIgnore:(UIButton *)buttonPressed {

     // Toggle the tapped button
     buttonPressed.selected = ( buttonPressed.selected) ?  NO : YES;

    id <ScoringToolbarDelegate> TB_delegate = _delegate;

    // Turn off the other button and call the delegate
    if ([buttonPressed.currentTitle isEqualToString:@"favorite"]) {

        self.ignoreButton.selected = NO;
        [TB_delegate favoriteButtonPressed];

    } else {

        self.favoriteButton.selected = NO;
        [TB_delegate ignoreButtonPressed];
    }
}
于 2013-12-03T03:27:49.007 に答える
-1

画像をすぐに変更するには、backgroundImageプロパティを使用します。

于 2011-04-18T06:51:58.673 に答える