我在用户选择按钮时尝试添加复选标记按钮,因此我为IBOutletColletion
和buttons
创建了两个check 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)
使用标签(按钮和上方图片标签相同)
- (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;
}