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 的图像颜色不会重置为默认值?

我想通过单击按钮来更改 UIButton 和 UIImage 视图。但是 UIButton 和 Image 视图的图像是不同的[重复]

Swift - Xcode 8 - iOS 10 - 无法创建简单约束

Swift Xcode TableViewCell 没有第一次加载

如何在 Swift Xcode 6.4 的 TableView 中显示 Parse 数组

Swift xcode 项目错误。无法从表格中检索单元格