【发布时间】:2021-11-30 08:08:42
【问题描述】:
我正在使用协议和委托将数据从一个 viewController 传递到另一个 viewController,但是当我单击发送时,它只会更改 viewController 而不会传递数据。
有人知道如何将数据从 ViewController B 返回到 ViewController A 吗?
它编译和工作正常,但没有记录,所以我不知道它是否有效。
// FirstViewController.swift
import Cocoa
class FirstViewController: NSViewController, DataEnteredDelegate {
@IBOutlet weak var buttonPasswordState: NSView!
@IBOutlet weak var label: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func buttonPasswordState(_ sender: Any) {
if let controller = self.storyboard?.instantiateController(withIdentifier: "SecondViewController") as? SecondViewController {
self.view.window?.contentViewController = controller
}
}
func userDidEnterInformation(info: String) {
label.stringValue = info
}
}
// SecondViewController.swift
import Cocoa
class SecondViewController: NSViewController {
@IBOutlet weak var buttonContinue: NSButton!
weak var delegate: DataEnteredDelegate? = nil
@IBOutlet weak var textField: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func buttonContinue(_ sender: Any) {
if let controller = self.storyboard?.instantiateController(withIdentifier: "FirstViewController") as? FirstViewController {
self.view.window?.contentViewController = controller
delegate?.userDidEnterInformation(info: textField.stringValue)
}
}
}
protocol DataEnteredDelegate: class {
func userDidEnterInformation(info: String)
}
【问题讨论】:
-
如果某些东西按预期工作,为什么要记录它?如果需要确定,请尝试在带断点的调试中运行。
-
controller.delegate = self
标签: swift cocoa nsviewcontroller pass-data