2

シンプルなボタン機能を実行しようとしています。

ボタン A。デフォルト、ハイライト、選択の 3 つの状態があります。もう一度クリックすると、選択を解除する必要があります。私の人生では、単純な 3 状態機能を確立することさえできません。

ハイライト (プレス時) が組み込まれて表示されます (「ストック」ブルーに移動します)。ボタン属性を使用して、選択した状態の画像をロードしました...コントロール/コンテンツで再生して、ハイライトと選択のオンとオフをクリックし、適切なコンボを見つけようとしました...

編集したい状態をドロップダウンで選択するだけだと思っていました....そして、その状態の編集を登録します...画像のロード/色の変更/など....

いいえ!!!!私は何が欠けています..?

4

5 に答える 5

1

さまざまな州の画像やタイトルを設定するために何をしようとしていますか?そのためには、次のような方法を使用できます

-(void)setImage:(UIImage *)image forState:(UIControlState)state;

また

-(void)setTitle:(NSString *)title forState:(UIControlState)state;

それはあなたが求めていることです。十分に明確ではないので、私はあなたの質問を誤解しているかもしれません。

于 2009-07-23T19:01:59.320 に答える
1

これについての率直な答えはどこにも見つかりませんでした。それで、うまくいくように見える独自のソリューションを作成しました。

ボタンをIBtouch up insideに接続することを忘れないでください。両方をバインドする必要があります 。setButtonPressed

file owner元にbutton1stButton


疑似コード

  • 選択したすべてのボタンをクリア
  • 送信者を選択済みに設定

コード


//Declare your buttons in .h

UIButton *1stButton;
UIButton *2ndButton;
UIButton *3rdButton;

@property(nonatomic, retain) IBOutlet UIButton *1stButton;
@property(nonatomic, retain) IBOutlet UIButton *2ndButton;
@property(nonatomic, retain) IBOutlet UIButton *3rdButton;

//In .m file - write 2 methods 

-(void)clearButtons
{
    [1stButton setSelected:FALSE];
    [2ndButton setSelected:FALSE];
    [3rdButton setSelected:FALSE];
}

//attach to touch up inside event in IB for each button

-(void) setButtonPressed:(UIButton *)sender 
{
    self.clearButtons;
    [sender setSelected:TRUE];
    [sender setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
}
于 2010-08-17T09:38:16.947 に答える
0

ああ!まあ、プログラマーではないので、Interface Builder 内の単純な「ストック」ソリューションを望んでいました。

「欲しい/願い」を明確にするために:

ボタンAE。各ボタンには、デフォルト、ハイライト、選択済みの 3 つの状態が必要です。デフォルト: 休止状態。ハイライト: Interface Builder 機能を使用するか、ハイライトに表示されるグラフィックをインポートする処理。ボタンを押している間、この状態になります。選択済み: ボタン AE が離されると、新しい状態を表示するか、インターフェイス ビルダー内で微調整 (フォントの色、影) を使用するか、グラフィックをインポートすることにより、選択されたことを示します。SELECTED ボタンをもう一度クリックすると、デフォルトの状態に戻ります。

SDK 3.0 Interface Builderには3つの状態のドロップダウンがあるため、「簡単」だと思っただけだと思います。コードが「魔法のように」ボタンに割り当てられ、美的な変化とともに希望どおりに機能すると思いました。

すべてのフィードバックに感謝します。このアプリのパートナーにコーディングのアドバイスを渡すことができます。

于 2009-07-23T20:11:01.223 に答える
0

これを試して:

UIImage *img1 = [UIImage  imageNamed:@"image1.png"];
UIImage *img2 = [UIImage  imageNamed:@"image2.png"];
UIImage *img3 = [UIImage  imageNamed:@"image3.png"];

[button setImage:img1 forState:UIControlStateNormal];
[button setImage:img2 forState:UIControlStateHighlighted];
[button setImage:img3 forState:UIControlStateSelected];
[button setImage:img2 forState:(UIControlStateHighlighted+UIControlStateSelected)];

[img1 release];
[img2 release];
[img3 release];

これは、状態変数が実際にはビット フラグであるためです。

于 2010-10-18T03:07:05.760 に答える
0

あなたが言っていることを完全に解析するのは難しいので、いくつかのコード (または IB スクリーンショット) を投稿する必要があります。

UIButton のデフォルトの動作では、押すと Selected 状態が表示され、その後通常の状態に戻ります。プレスを「ロックダウン」したい場合は、UIButton にフックされた IBAction で次のようにする必要があります。

BOOL pressed;
UIButton *button

- (IBAction) toggleButton:(id)sender
{
    button.selected = ! pressed;
    pressed = ! pressed;
}
于 2009-07-23T19:52:03.073 に答える