2016-02-29 122 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; 
}