如何只使用某些边框颜色循环UIButtons?

时间:2015-11-01 06:41:09

标签: ios objective-c for-loop uibutton

我试图仅使用某些边框颜色遍历某些UIButton。例如,我希望循环显示当前仅显示浅灰色边框颜色的UIButton。我理解如何在这样的视图中遍历所有按钮:

      for (_buttonField  in self.view.subviews) 

但我无法弄清楚如何只选择目前仅以浅灰色(或任何特定颜色)为界的UIButton。然后我想用这个指定的UIColor边框删除这些UIButtons。我知道这是用removefromsuperview完成的,但我不确定在此之前要调用什么。当我按下UIAlertController中的“删除”按钮时,我实际上正在尝试这样做。

3 个答案:

答案 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。通常最简单的方法是在字典中整理按钮引用,其中键是模型中的值,值是与该值对应的所有按钮的数组。因此,数组中的所有按钮都具有相同的颜色,并且每个数组的颜色彼此不同。