我有两个视图控制器。VC1
&VC2
。VC1
正在传递一个变量,该变量在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)
}
它在发送遇到的第一个值时工作,但在值不断更改时不工作,所以我希望在触发更改时立即发送该值。
我试着去做,但不是那样的。
最佳答案
使用委托模式。
在VC2中:
protocol VC2Delegate: class {
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/