将复选标记图像添加到多个按钮数组

Posted

技术标签:

【中文标题】将复选标记图像添加到多个按钮数组【英文标题】:Add checkmark image to multiple array of buttons 【发布时间】:2016-02-29 14:45:15 【问题描述】:

当用户选择一个按钮时,我试图添加一个复选标记按钮,因此我为 buttonscheck mark image 创建了两个 IBOutletColletion

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

- (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 张图片并简单地切换按钮的背景图片? 【参考方案1】:

使用标签(Button 和 Above image 标签相同)

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

更好的解决方案

创建两个图像 一个只有心脏,另一个图像是带复选标记的心脏

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

【讨论】:

【参考方案2】:

我建议的另一个解决方案是创建一个自定义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;

【讨论】:

以上是关于将复选标记图像添加到多个按钮数组的主要内容,如果未能解决你的问题,请参考以下文章

将复选标记保存到 tableView Swift 时出现问题

Web 可访问复选标记

一旦我单击第一个复选框,它也会将复选标记放在另一个复选框中

Java Swing OSX 窗口菜单复选标记

添加/删除 UITableView 选择到数组,复选标记在滚动时消失 - Swift

Swift - 处理表格视图多个部分的自定义复选标记按钮状态