将复选标记图像添加到多个按钮阵列

时间:2016-02-29 14:45:16

标签: ios objective-c uiimageview uibutton nsarray

我在用户选择按钮时尝试添加复选标记按钮,因此我为IBOutletColletionbuttons创建了两个check mark imageenter image description here

下一步是当用户选择每个按钮时,每个图像上方都会出现一个复选标记图像,所以在这部分我有一个问题,即所有显示的复选标记都隐藏了!不是当用户选择特定按钮时。这是我的代码:

- (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;
                         }
                    }

                }
        }

2 个答案:

答案 0 :(得分: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;
                       }
                     }
            }
    }

更好的解决方案

创建两个图像 一个只有心脏和另一个图像的心脏与Checkmark

在按钮的正常状态下设置仅心脏图像(取消选择) 并将组合图像设置为选定状态

答案 1 :(得分: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;
}