gpt4 book ai didi

swift - 如何以操作的形式更改 ViewController 之间的数据?

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

我在将数据作为操作在 ViewController 之间传递时遇到问题。这意味着以下内容:

ViewController1 - NavigationControllers, etc. - ...                                                 |                                                 |ViewController2    -     -    -    -    -   -   ...

所以我有两个 ViewController。 ViewController1 有一个变量(假设 var myName:String = "Joana")我想通过单击 ViewController2 中的按钮来更改它。我的问题是:我该怎么做(我知道如何在通过 segue 直接连接的 VC 之间传递数据,但不与操作结合,这是我的问题)?我听说过prepare(for segue: UIStoryboardSegue, sender: Any?),但我认为只有在两个VC之间存在segue(直接)时它才有效。总结:

VC2:按钮:操作 -> 将 VC1 上的 var 'myname' 更改为 'hello',不直接转场。

提前感谢您的帮助! :-)

最佳答案

看一下:

class FirstVC: UIViewController {
var someAttribute: String = "ola!"

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let segueIdentifier = segue.identifier else { return }
if segueIdentifier == "YourSegueIdentifierFromStoryBoard" {
guard let viewController = segue.destination as? SecondVC else { return }
// someAttribute == "ola!"
viewController.someButtonTappedHandler = { [weak self] (newValue) in
guard let strongSelf = self else { return }
strongSelf.someAttribute = newValue
// someAttribute == "Bla Bla Bla!"
}
}
}
}

class SecondVC: UIViewController {
var someButtonTappedHandler: ((String) -> Void)?

@IBAction func someButtonTapped() {
if let handler = someButtonTappedHandler {
handler("Bla Bla Bla!")
}
}
}

关于swift - 如何以操作的形式更改 ViewController 之间的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43901439/

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