【问题标题】: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 张图片并简单地切换按钮的背景图片?

标签: ios objective-c uiimageview uibutton nsarray


【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-04
      • 2011-08-22
      • 2020-08-24
      • 2012-09-11
      • 1970-01-01
      相关资源
      最近更新 更多