4

ボタンを押した瞬間に画像ボタンを変更しようとしています。解放されたら元に戻したい。

ここでいくつかの投稿を読みましたが、機能していません。

プログラミングせずにGUIでそれを行うことは可能ですか?

私はこれを試しました:

-(IBAction) toggleUIButtonImage:(id)sender{
     if ([sender isSelected]) {
         [sender setImage:unselectedImage forState:UIControlStateNormal];
         [sender setSelected:NO];
     }else {
         [sender setImage:selectedImage forState:UIControlStateSelected];
         [sender setSelected:YES];
      }
 } 

しかし、関数 toggleUIButtonImage に関連付ける送信者イベントの種類は何ですか?

ありがとう

4

4 に答える 4

12

各ボタンの状態設定に異なる設定を与えることにより、InterfaceBuilderでそれを行うことができます。

使用可能な状態は次のとおりです。デフォルト、選択済み、および無効

または、「UIButton」setImage:forStateメソッドを使用して、コード内のボタンの「設定」を変更することもできます。

    [myButton setImage:highlightedImage forState:UIControlStateHighlighted];

通常、ユーザーの操作への応答としてボタンのサブビューを手動で変更するのではなく、上記のようにボタンを「構成」することによってこれを行う必要があります。それが機能しない理由は、UIButtonの固有の隠された動作です。ユーザーの操作への応答としてボタンのサブビューを手動で変更しますが、変更はボタンの設定で定義されたものに戻されます(ボタンの状態に応じて)。したがって、コードは何も実行しないようです。

于 2012-10-12T19:18:24.447 に答える
4

ViewDidLoadメソッドで

のプロパティを設定します

[[button setImage:[UIImage ImageNamed:@"unselectedImage.png"] forState: UIControlStateNormal]; 
[[button setImage:[UIImage ImageNamed:@"selectedImage.png"] forState: UIControlStateHighlighted ];
于 2012-10-12T18:06:13.933 に答える
2

これは Interface Builder で行うことができ、コードは必要ありません。

IB でボタンを選択し、右側のサイドバーに移動して、[タイプ] を [カスタム] に変更し、[状態の構成] が [デフォルト] であることを確認して、[背景画像] テキスト フィールドに「通常の画像」参照の名前を入力します。

次に、State Config を Highlighted に変更し、Background Image テキスト フィールドに「押された画像」参照の名前を入力します。

于 2012-10-12T18:03:53.387 に答える
1

IBでは、ボタンの強調表示(選択されていない)状態の画像を設定できます。それはそれをする必要があります。

[ユーティリティ]ペインの[ボタン]セクションを確認し、[状態の構成]ドロップダウンから[強調表示]を選択します。

于 2012-10-12T18:02:30.613 に答える