簡體   English   中英

如何僅使用某些邊框顏色遍歷UIButton?

[英]How to loop through UIButtons with only certain border colors?

我試圖通過僅具有某些邊框顏色的某些UIButton循環。 例如,我希望遍歷當前僅顯示邊框顏色為淺灰色的UIButton 我了解如何遍歷這樣的視圖中的所有按鈕:

      for (_buttonField  in self.view.subviews) 

但是我無法弄清楚如何僅選擇當前僅以淺灰色(或與此相關的任何特定顏色)為邊界的UIButton 然后,我想刪除具有此指定UIColor邊框的這些UIButton。 我知道這是通過removefromsuperview完成的,但是我不確定在此之前要調用什么。 當我按下UIAlertController中的“刪除”按鈕時,我實際上正在嘗試執行此操作。

您必須使用isEqual比較顏色,因為您不想比較指針,而是想要比較顏色值。

for (UIButton *button in self.view.subviews) {
    if ([[UIColor colorWithCGColor:button.layer.borderColor] isEqual:[UIColor lightGrayColor]]) {
        [button removeFromSuperview];
    }
}

嘗試

for (UIButton *buttonField in self.view.subviews {
 if (buttonField.layer.borderColor == [UIColor lightGreyColor].CGColor)
  [buttonField removeFromSuperview];
}

不要以顏色為基礎。 從技術上講,您可以比較顏色,但這是錯誤的選擇。 這意味着要在真正應該查詢模型的時候查詢視圖以決定邏輯結果。 想想MVC或MVVM。

因此,您的按鈕代表模型的某些部分,每個按鈕都有一個顏色,代表模型中的某些屬性。 觸發刪除操作后,應將其鏈接到一個值,您可以將其與該屬性進行比較以確定要刪除的內容。 然后,您更新模型。

更新模型后,您將更新UI。 通常,最簡單的方法是在字典中整理按鈕引用,其中的鍵是模型中的值,而值是對應於該值的所有按鈕的數組。 因此,陣列中的所有按鈕都具有相同的顏色,並且每個陣列彼此具有不同的顏色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM