10

IBでは、UIBarButtonItemの識別子を「再生」に設定できます。これにより、再生ボタン(右向きの三角形)の画像が追加されます。

この画像をプログラムで変更する方法はありますか?再生ボタンを押したときに「一時停止」に変更したい。

UIBarButtonItemを識別子で初期化できることは知っていますが、初期化後に変更する方法をまだ見つけていません。これも可能ですか?

私が考えることができる唯一のことは、古いボタンを削除し、代わりに新しいボタンを初期化することですが、これはほとんど効率的ではないようです。

何かご意見は?

4

3 に答える 3

14

OK、私はこの質問をグーグルで検索して、まったく同じことを行うAppleのサンプルコードに遭遇しまし た(ツールバーボタンの再生/一時停止ボタンのグラフィックを切り替えます)。ただし、組み込みの再生識別子と一時停止識別子を使用する代わりに、カスタム イメージとトグル カスタム イメージUIBarButtonItemを使用します。UIButton

したがって、Apple が組み込みの再生ボタンと一時停止UIBarButtonItemボタンの代わりに UIButton でカスタム イメージを作成してトグルするという問題を経験した場合、プログラムで の識別子を変更する方法はないと言って間違いないと思いますUIBarButtonItem

これは、ボタンが押されたときに画像を切り替えるために彼ら (Apple) が行うことです。

// Call this when the button you want to toggle is pressed:
[playButton setImage:((p.playing == YES) ? pauseBtnBG : playBtnBG) forState:UIControlStateNormal];

p.playing を、ボタンの状態を保持したい任意の BOOL に置き換えます。 ツールバー playButtonのカスタムです。とは切り替える画像です。UIButtonpauseBtnBGplayBtnBG

于 2010-06-16T16:28:49.270 に答える
13

これはかなりうまくいくようです:

UIBarButtonItem *oldButton = [myToolBar.items objectAtIndex:1];
[myToolBar setItems:[NSArray arrayWithObjects:[myToolBar objectAtIndex:0], [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:@selector(tapStopRefreshButton:)],nil] animated:NO];
[oldButton release];

この例では、UIWebView のツールバーがあり、誰かが [再読み込み] をクリックしたときに [停止] に変更したいと考えていました。ツールバーには柔軟なスペースと 1 つのボタン (ボタンを右揃えにするため) しかありませんでした。そのため、古いボタンへの参照を取得し、古いボタンと同じセレクターを使用して新しいボタンを作成し、タブ バーのボタンをリセットしました。 、元のボタンを放します。

最もきれいではありませんが、ボタン クラスをオーバーライドすることなく、すべての標準ボタンを使用できます。

于 2010-12-09T01:27:24.313 に答える
0

2 つの重ねられたツールバーはどうですか? 次に、いくつかのシステム ボタンを上部に配置し、他のボタンを下部に配置できます。再生ボタンが押された場合は、上部のツールバーを非表示にします。

于 2013-04-19T18:13:11.197 に答える