gpt4 book ai didi

swift - 如何在两个 View Controller 之间传递(变化的)变量?

转载 作者:行者123 更新时间:2023-11-28 10:03:33 25 4
gpt4 key购买 nike

我有两个 View Controller 。 VC1 & VC2VC1 正在传递一个变量,该变量在 VC1 上每秒不断变化和更新,在我的例子中,它是由 VC1< 中的方法处理的最近的信标.

VC1代码:

  var id: Int = 0 // initializing

// send data to VC2
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let vc2 = segue.destination as? navigationScreenVC else { return }
vc2.id2 = id
}

VC2代码:

  var id2: Int = 0

override func viewDidLoad() {
super.viewDidLoad()
print(VC2)
}

它在发送它遇到的第一个值的地方工作,但当值不断变化时就不会工作,所以我希望它在触发变化时立即发送。

我尝试执行 didSet{},但它不是那样工作的。

最佳答案

使用委托(delegate)模式。

在 VC2 中:

protocol VC2Delegate: AnyObject {
var id2: Int { get }
}

class VC2 {
weak var delegate: VC2Delegate?

override func viewDidLoad() {
super.viewDidLoad()
print(delegate?.id2)
}
}

在 VC1 中:

class VC1: UIViewController, VC2Delegate {
...
var id2: Int = 0

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let vc2 = segue.destination as? navigationScreenVC else { return }
vc2.delegate = self
}
...
}

关于swift - 如何在两个 View Controller 之间传递(变化的)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57189850/

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