ios - Swift/XCode 编辑类或 UIButton 的所有实例

标签 ios swift uibutton

我在 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/

相关文章:

ios - AppDelegate.swift 中没有这样的模块 'Capacitor'

ios NSURLConnection异步请求,在UITableView中显示数据

swift - CIDetector 不使用 UIImagePickerController (Swift) 检测人脸

ios - 自定义 uitableviewcell 内的 Ui 按钮

ios - 在 SWTableViewCell 中,UtilityButtons 不响应 setTag 属性

ios - 无法在iOS中设置udpsink gstreamer元素的 'socket'属性

ios - 从 String 转换为 Double 导致 Swift 崩溃

swift - “Int”无法转换为 'Range<Int>'

ios - Swift 中的 Facebook 图形对象/实体解析 SDK 4

iphone - 我想将 UIButton 移动到特定位置,例如在网格上