[英]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.