gpt4 book ai didi

Swift 如何判断共享实例中的变量何时更改

转载 作者:搜寻专家 更新时间:2023-10-31 22:04:55 24 4
gpt4 key购买 nike

我有一个单例模式的变量,在整个应用程序中使用/引用。

我有一个 mainVC,其中有一个设置变量的自定义 View 。我希望在该变量更改时通知导航 Controller 中显示的 View Controller 。

例如:

在我的 mainVC 中,它有一个嵌入式导航 Controller ,我将其推送到 View1。在 mainVC 工具栏上,有一个文本字段,用户可以在其中输入值。当此值更改时,我想让 View1 知道它已更改。 View1 可以是当前呈现的任何 View 。

最佳答案

我会在该变量上创建一个 didSet 值观察器。然后,当任何 ViewController 出现时,将委托(delegate)设置为 self。并在 ViewController 上跟踪该变量的变化。

每个 ViewController 应该做的:

class ViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

Singleton.shared.delegate = self
}
}

extension ViewController: SingletonDelegate {
func variableDidChange(newVariableValue value: Int) {
//here u get value if changed
}
}

还有带有你的变量和协议(protocol)的单例

protocol SingletonDelegate: class {
func variableDidChange(newVariableValue value: Int)
}

class Singleton {

var variable:Int = 0 {
didSet {
delegate?.variableDidChange(newVariableValue: variable)
}
}

private init() {}
weak var delegate: SingletonDelegate?

static let shared = Singleton()
}

PD:注意这种方式只有导航中的顶部 ViewController 会处理 newValue 事件。

关于Swift 如何判断共享实例中的变量何时更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47358079/

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