2016-02-29 176 views
0

我試圖添加複選標記按鈕時用戶選擇一個按鈕的多個陣列,所以我創建兩個IBOutletColletion既爲buttonscheck mark image添加複選標記圖像按鈕

下一步是當用戶選擇每個的按鈕複選標記圖像出現在每個圖像的上方,所以在這部分我有一個問題,這是檢查標記所有顯示和全部隱藏!不是當用戶選擇特定的按鈕時。這裏是我的代碼:

- (void)viewDidLoad { 

//Hide checkmarks when app opens 
for (UIImageView*checkMark in _checkMarkArray) { 

         checkMark.alpha = 0; 
    } 
} 





- (IBAction)button1:(id)sender { 
      for (UIButton*button in _ButtonsArray) { 

        if (sender == button) { 

         for (UIImageView*checkMark in _checkMarkArray) { 

          checkMark.alpha = 1; 
         } 
        } 

       } 
     } 
+0

爲什麼不使用2圖像的按鈕,只需切換按鈕的背景圖像? –

回答

2

使用標籤(這裏的按鈕和上面的圖片標籤相同)

- (IBAction)button1:(id)sender { 

        for (UIImageView*checkMark in _checkMarkArray) { 
         if(sender.tag == Checkmark.tag && sender.isSelected) 
         { 
         checkMark.alpha = 1; 
         } 
         if(sender.tag == Checkmark.tag && !sender.isSelected) 
         { 
         checkMark.alpha = 0; 
         } 
        } 
      } 
    } 

更好的解決方案

創建兩個圖像 一個只有心臟和另一幅圖​​像是心臟帶勾選標記

設置只有按鈕正常狀態下的心臟圖像(已選中) 並在選定的座標系中設置組合圖像te

1

我建議的另一個解決方案是創建一個自定義UIButton類,其中包含兩個UIImageViews。在按鈕操作方法中,使複選標記圖像相應隱藏或可見。在這種情況下,您只需要兩張圖像,一張心臟圖像和一張刻度圖像。

你CustomButton.h會是這個樣子: -

@property (nonatomic, strong) UIImageView *checkMarkImageView, *backgroundImageView; 

給予適當的框架中CustomButton.m文件ImageViews。現在在計劃給按鈕操作的視圖或視圖控制器中,相應地更改複選標記圖像視圖的狀態。所以按鈕動作看起來像這樣: -

-(void)buttonClicked:(UIButton *)sender { 
    if (sender.checkMarkImageView.hidden == YES) 
     sender.checkMarkImageView.hidden = NO; 
    else 
     sender.checkMarkImageView.hidden = YES; 
}