我在 Swift 中有一个自定义的 UIButton 类,需要找到一种方法来在单击任何按钮时编辑它的所有实例。 I read this , 然而那是 5 年前的事了,我想知道现在是否可行。
我需要这样做以使类中的所有其他按钮在单击其中一个按钮时消失,并且选定的按钮会更改其颜色,但随后会返回到其先前的状态。并且还基于类的属性值,itTrue: String = ""
来改变颜色,所以如果 itTrue
没有改变,它会保持原来的颜色,如果 itTrue
为是,它将变为绿色,如果 itTrue
为否,它将变为粉红色
我也尝试创建一个按钮数组,但这一直给我错误,而且看起来它还需要大量重写代码,因为按钮当前是在 for 循环中创建的。
非常感谢任何帮助。
最佳答案
我对您打算对这些按钮做什么以及它们最终将如何重新获得可见性感到有点困惑,但是您可以向自定义 UIButton 类添加一个函数以在包含其中一个按钮的 View 中找到所有其他实例(例如,被按下的那个)。
class ExclusiveButton:UIButton
{
func otherInstances(var onView:UIView? = nil ) -> [ExclusiveButton]
{
var result:[ExclusiveButton] = []
if onView == nil
{
onView = superview
while onView!.superview != nil { onView = onView!.superview }
}
for subView in onView!.subviews
{
if let button = subView as? ExclusiveButton
where button !== self
{ result.append(button) }
else
{ result = result + otherInstances(subView) }
}
return result
}
}
然后您可以使用 button.otherInstances() 遍历另一个实例并进行任何您喜欢的更改。
注意:调用.otherInstances()时不需要指定 View ,方法内部只需要参数即可。
您的类也可以在内部使用它来封装类本身的行为,而不是将其推送到调用代码。
关于ios - Swift/XCode 编辑类或 UIButton 的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108619/