将复选标记图像添加到多个按钮数组
Posted
技术标签:
【中文标题】将复选标记图像添加到多个按钮数组【英文标题】:Add checkmark image to multiple array of buttons 【发布时间】:2016-02-29 14:45:15 【问题描述】:当用户选择一个按钮时,我试图添加一个复选标记按钮,因此我为 buttons
和 check 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 时出现问题