gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:00:50 24 4
gpt4 key购买 nike

我遇到了以下问题。我得到了 UIView 的扩展,其中包含一个用于显示值的 View (在本例中为配对 BT 设备的电池值)。我需要在多个 View Controller 中拥有此 View ,而该值来自一个最终类(它接收并处理设备值)。

有没有办法让这个 UIView 成为“静态”,以便 DeviceClass 更改 BatteryClass 中的值,并且在 BatteryClass 的所有子级中更改该值?或者还有其他方法可以更好地实现这一点吗?我只是不想为每个 View Controller 编写一个新方法来更新 BatteryView。

最佳答案

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

一旦电池处理程序注册了电池值的更改,它就会通过 NotificationCenter 发布新值,并且所有注册的观察者都会在其类中处理更改后的值。我唯一还没弄清楚是否可以通过 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 函数。

关于ios - 修改 UIView 扩展的所有子项一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47263078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com