我试图仅使用某些边框颜色遍历某些UIButton
。例如,我希望循环显示当前仅显示浅灰色边框颜色的UIButton
。我理解如何在这样的视图中遍历所有按钮:
for (_buttonField in self.view.subviews)
但我无法弄清楚如何只选择目前仅以浅灰色(或任何特定颜色)为界的UIButton
。然后我想用这个指定的UIColor边框删除这些UIButtons。我知道这是用removefromsuperview完成的,但我不确定在此之前要调用什么。当我按下UIAlertController中的“删除”按钮时,我实际上正在尝试这样做。
答案 0 :(得分:1)
您必须使用isEqual
比较颜色,因为您不想比较指针而是比较颜色值。
for (UIButton *button in self.view.subviews) {
if ([[UIColor colorWithCGColor:button.layer.borderColor] isEqual:[UIColor lightGrayColor]]) {
[button removeFromSuperview];
}
}
答案 1 :(得分:0)
尝试
for (UIButton *buttonField in self.view.subviews {
if (buttonField.layer.borderColor == [UIColor lightGreyColor].CGColor)
[buttonField removeFromSuperview];
}
答案 2 :(得分:0)
不要根据颜色做任何事情。从技术上讲,你可以比较颜色,但这是错误的做法。当你真正应该询问你的模型时,这将意味着询问视图以决定逻辑结果。想想MVC或MVVM。
因此,您的按钮代表模型的某些部分,每个按钮都有一个代表模型中某些属性的颜色。当触发删除操作时,它应该链接到一个值,您可以将该属性与该属性进行比较以确定要删除的内容。然后更新模型。
更新模型后,您将更新UI。通常最简单的方法是在字典中整理按钮引用,其中键是模型中的值,值是与该值对应的所有按钮的数组。因此,数组中的所有按钮都具有相同的颜色,并且每个数组的颜色彼此不同。