修改一次 UIView 扩展的所有子项



我遇到了以下问题。我得到了 UIView 的扩展,其中包含一个用于显示值的视图(在本例中为配对 BT 设备的电池值(。我需要在多个视图控制器中具有此视图,而值来自最后一个类(接收和处理设备值(。

有没有办法使这个UIView"静态",以便DeviceClass更改BatteryClass中的值,并且在BatteryClass的所有子项中更改?或者有没有其他方法可以更好地实现这一点?我只是不想为每个视图控制器编写更新电池视图的新方法。

@Y.Bonafons 实际上有正确的答案。对我来说最好的方法是在这里使用 NotificationCenter,因为我有 1 对 N 的通信。

一旦电池处理程序注册了电池值的更改,它就会通过NotificationCenter发布新值,并且所有注册的 obervers 都会在其类中处理更改的值。我唯一还没有弄清楚是否也可以通过NotificationCenter传输值,但我对此表示怀疑。

下面是 Swift 4.0 的一个简短示例:

class Device: UIViewController{
   func batteryValueChanged(){
      NotificationCenter.default.post(name: Notification.Name("ValueChanged"), object: nil)
   }
}

在目标类中只需添加viewDidLoad

      NotificationCenter.default.addObserver(self, selector: #selector(self.updateValue()), name: Notification.Name("ValueChanged"), object: nil)

Notification.Name("ValueChanged")必须是一致的,并且在选择器中是一个在值更改时调用的@objc函数。

最新更新