gpt4 book ai didi

swift - 如何在 swift 中使用 segue 实现两个 ViewController 之间的委托(delegate)?

转载 作者:行者123 更新时间:2023-11-28 05:54:47 25 4
gpt4 key购买 nike

enter image description here

我有点混淆 abt swift 委托(delegate)。比如说,如果我想将 BViewController 中的文本字段文本传递给 AViewController。 (AViewController 有一个标签,但我没有放任何文本,所以它什么也没有显示)在用户完成输入并单击“LETS GO”按钮后,AViewController 中标签的文本应该显示相同的文本。我实现了代码,但它给了我一些错误。谢谢。

代码:

import UIKit

class AViewController: UIViewController, BViewDelegate {


@IBOutlet weak var labelTextData: UILabel!

override func viewDidLoad() {
super.viewDidLoad()


}

func userDoneInput(textData: String) {
labelTextData.text = textData
}



}




import UIKit

protocol BViewDelegate{
func userDoneInput(textData: String)
}

class BViewController: UIViewController {


@IBOutlet weak var UserInputText: UITextField!
var bViewDelegate: BViewDelegate?

override func viewDidLoad() {
super.viewDidLoad()


}


@IBAction func LetsGo(_ sender: UIButton) {
self.performSegue(withIdentifier: "ShowData", sender: self)

}

//use segue
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ShowData" {
let destination = segue.destination as! AViewController
destination.labelTextData.text = UserInputText.text

}
}

}

最佳答案

1-A秀

2- 当你执行 segue 到 B set delegate here(这段代码在 A 中)

@IBAction func MoveToB (_ sender: UIButton) {
self.performSegue(withIdentifier: "GoToB", sender: self)

}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "GoToB" {
let destination = segue.destination as! BViewController
destination.bViewDelegate = self
}
}

3- 当你想从 B 返回到 A (这段代码在 B 内)

self.bViewDelegate?.userDoneInput(textData: UserInputText.text!)
self.dismiss(animated:true,completion:nil)

4- 从 B 到 A 不应该有任何 segue

关于swift - 如何在 swift 中使用 segue 实现两个 ViewController 之间的委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51791410/

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