2017-06-22 3 views
0

2つのボタンから選択したボタンを取得します。iOS:いずれかのボタンが選択されている場合、すべてのボタンの背景画像を変更します。

は、これは私のシナリオです:私のViewController

、私は3種類の選択にユーザーがボタンから(1つだけ選択すること)しましょう。最初は、ボタンが1つしか表示されません。このボタンをタップすると、画像のようなものの下に2つの他のものが表示されます。唯一の違いは、選択したボタンを2回表示しないことです(写真の「返信」とは異なります)。

enter image description here

これら2つの最後のボタンが3のボタンがあるときBTN1がタップされた場合にのみ示され、そして隠されているビューである(のは3つのボタン、BTN1(選択)、BTN2とbtn3に名前を付けましょうもう一度タップ)。私はこれらのボタンでtype1、type2、type3の3種類を記述します。最初にbtn1が背景画像タイプ1ImageOn.png( "選択"を意味する "on")とbtn2 - > type2ImageOff.pngとbtn2 - > type3ImageOff.pngを持っているとします。ユーザが例えばbtn2を選択すると、btn1(選択)画像はtype1ImageOn.pngからtype2ImageOn.png、btn2 - > type1ImageOff.png、およびbtn3 - > type3ImageOff.pngに設定する必要があります。

私が選択されているどのような種類を知るために機能を作成しましたが、私はそれが動作を取得することはできません。

-(void) checkSelectedFilterBtn:(UIButton *)sender { 
UIButton *tmpFilter = sender; 
UIImage* type1ImageOff = [UIImage imageNamed:@"type1ImageOff.png"]; 
UIImage* type2ImageOff = [UIImage imageNamed:@"type2ImageOff.png"]; 
UIImage* type3ImageOff = [UIImage imageNamed:@"type3ImageOff.png"]; 

UIImage* type1ImageOn = [UIImage imageNamed:@"type1ImageOn.png"]; 
UIImage* type2ImageOn = [UIImage imageNamed:@"type2ImageOn.png"]; 
UIImage* type3ImageOff = [UIImage imageNamed:@"type3ImageOn.png"]; 


if (tmpFilter.currentBackgroundImage == type1ImageOff) 
    { 
     self.selectedFilter = @"type1"; 
     self.filterButton.imageView.image = type1ImageOn; 
     self.filterBtn2.imageView.image = type2ImageOff; 
     self.filterBtn3.imageView.image = type3ImageOff; 
    } 
    else if (tmpFilter.currentBackgroundImage == type2ImageOff) { 

     self.selectedFilter = @"type2"; 
     self.filterButton.imageView.image = type2ImageOn; 
     self.filterBtn2.imageView.image = type1ImageOff; 
     self.filterBtn3.imageView.image = type3ImageOff; 

    } else { 

     self.selectedFilter = @"type3"; 
     self.filterButton.imageView.image = type3ImageOn; 
     self.filterBtn2.imageView.image = type1ImageOff; 
     self.filterBtn3.imageView.image = type2ImageOff; 
    } 

    self.filterView.hidden = true; 
} 

私はこのようなBTN2のIBActionsとbtn3でこの関数を呼び出します

- (IBAction)filterBtn2TouchUp:(id)sender { 

    [self checkSelectedFilterBtn:sender]; 

} 

- (IBAction)filterBtn3TouchUp:(id)sender { 

    [self checkSelectedFilterBtn:sender]; 

} 

答えて

0

あなたは01の背景画像を設定するには、setterメソッドを使用する必要がbutton.imageview.image = image;

ようUIButton背景画像を設定することはできません。

例:

[self.filterButton setBackgroundImage:type1ImageOn forState:UIControlStateNormal]; 
[self.filterBtn2 setBackgroundImage:type1ImageOff forState:UIControlStateNormal]; 
[self.filterBtn3 setBackgroundImage:type2ImageOff forState:UIControlStateNormal]; 
+0

「UIButton」の背景画像を設定する方法についてはあなたが正しいですが、私はexamplのテストに問題があるようですe: 'tmpFilter.currentBackgroundImage == type1ImageOff'なぜなら、私が実行をデバッグするとき、常に最後の' else'に行くからです。イメージの名前は私のプロジェクトで持っているものと同じで、デバッグ時には値がゼロではない –

+0

このように比較する必要があります([tmpFilter backgroundImageForState:UIControlStateNormal] == type1ImageOff) – Subramanian

+0

私は同じ問題を抱えています –

0

あなたにsetImage forStateメソッドを使用してくださいUIButton

[myButton setImage:[UIImage imageNamed:@"type1ImageOff.png"] forState:UIControlStateNormal]; 

[myButton setImage:[UIImage imageNamed:@"type1ImageOff.png"] forState:UIControlStateSelected]; 

一度myButton.enabled = YESそれは正常な状態

のためにNO選択された状態の画像を提示します
+0

ありがとうございますが、私は、例えばtmpFilterのようなテストに問題があるようです。currentBackgroundImage == type1ImageOff'なぜなら、私が実行をデバッグすると常に最後のelseに行くからです。画像の名前は私のプロジェクトで持っているものと同じで、デバッグ時には値がnilではない –

関連する問題