0

1 つのボタンを使用して、UIImageView オブジェクトの 2 つの画像を切り替えようとしています。特定の問題に近い問題/回答を探していましたが、運がなかったので、ここに行きます...

MainViewController.h
 IBOutlet UIButton *selectionButton;
 UIImageView *selectionStatus;
 @property(nonatomic, retain) UIButton    *selectionButton;
 @property(nonatomic, retain) UIImageView *selectionStatus;
 - (IBAction)selectionButtonPressed: (id)sender;

MainViewController.m
 @synthesize selectionButton;
 @synthesize selectionStatus;
 - (IBAction)selectionButtonPressed: (id)sender
 {
   if (selectionStatus.highlighted == YES)  
      selectionStatus.highlighted = NO;
   else 
      selectionStatus.highlighted = YES;
 }

 -(void)viewWillAppear:(BOOL)animated {
   // selection images
   selectionStatus = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NotSelected.png"]  
                                       highlightedImage:[UIImage imageNamed:@"Selected.png"]];
 }  

これをシミュレーターで実行すると、「SelectionStatus」に画像が表示されないので、何か大きなものが欠けていると思います。助けていただければ幸いです。ありがとう!

ボタンについてもっと言うべきでした。selectionButton は、selectionStatus イメージビューと計算結果を表示するラベルを重ねるカスタム ボタンです。selectionButton をタップすると、最大 3 つの選択されたラベル値の平均の計算に含めるラベルの値が選択されます。selectionStatus に表示される画像は、選択状態によって色が変わるチェックマークです。機能する別のアプローチを見つけましたが、エレガントではないようです。

- (IBAction)selectionButtonPressed: (id)sender
{
    if (toggleValue == YES) {
        toggleValue = NO;
        UIImage *unselect = [UIImage imageNamed:@"NotSelected.png"];
        selectionStatus.image = unselect;
    }
    else {
        toggleValue = YES;
        UIImage *select = [UIImage imageNamed:@"Selected.png"];
        selectionStatus.image = select;
    }
}

このアプローチでは、viewWillAppear を使用する必要はなく、初期化は viewDidLoad で行われます。コメントと提案をありがとう。

4

1 に答える 1

0

ib で、ボタンの背景画像プロパティを設定します。画像が非常に大きいと思います。実際、ボタンの状態をハイライトに設定すると、ボタンに表示されます。試してみてください。よくわかりません。

于 2012-06-14T01:48:39.613 に答える