Swift/XCode 编辑类或 UIButton 的所有实例
Posted
技术标签:
【中文标题】Swift/XCode 编辑类或 UIButton 的所有实例【英文标题】:Swift/XCode Edit all instances of a Class or UIButton 【发布时间】:2016-01-30 23:46:55 【问题描述】:我在 Swift 中有一个自定义的 UIButton 类,需要找到一种方法来在单击任何按钮时编辑它的所有实例。 I read this,但那是 5 年前的事了,想知道现在是否可行。
我需要这样做以使该类的所有其他按钮在单击其中一个按钮时消失,并且选定的按钮会改变它的颜色,然后又回到以前的状态。并且还基于类的一个属性值,itTrue: String = ""
来改变颜色,所以如果itTrue
没有改变,它会保持原来的颜色,它itTrue
是,它会变成绿色,如果@ 987654325@不是,会变成粉红色
我也尝试创建一个按钮数组,但这一直给我错误,而且看起来还需要大量重写代码,因为按钮当前是在 for 循环中创建的。
非常感谢任何帮助。
【问题讨论】:
【参考方案1】:我对您打算对按钮做什么以及它们最终将如何重新获得可见性感到有些困惑,但是您可以向自定义 UIButton 类添加一个函数,以在包含其中一个的视图上查找所有其他实例(例如被按下的那个)。
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()时不需要指定视图,方法内部只需要参数即可。
您的类也可以在内部使用它来将行为封装在类本身中,而不是将其推送到调用代码。
【讨论】:
以上是关于Swift/XCode 编辑类或 UIButton 的所有实例的主要内容,如果未能解决你的问题,请参考以下文章
我想通过单击按钮来更改 UIButton 和 UIImage 视图。但是 UIButton 和 Image 视图的图像是不同的[重复]
Swift - Xcode 8 - iOS 10 - 无法创建简单约束
Swift Xcode TableViewCell 没有第一次加载