我在 Swift 和 OSX 开发方面绝对是新手,如果我的问题太菜鸟,我很抱歉。我想了解 NSViewController 之间的导航原理。
我有默认的ViewController
,其中有登录名和密码字段以及登录按钮。点击按钮后,返回token。现在我尝试将“view”更改为SecondViewController并保存在某个地方 token ,我将来会需要它。我该怎么做?可以在函数中做到这一点吗?:
@IBAction func loginButton(_ sender: Any) {
....
}
谢谢!
最佳答案
您需要使用segues
来执行此操作。
首先使用 Storyboard编辑器在ViewControllers
之间建立segues
连接。之后,您需要在 Storyboard的属性检查器上为 segues
提供一个标识符。然后,在您的代码中,您可以通过 segue
调用新的 ViewController
,如下面的代码所示。
使用此代码,您可以使用按钮传递数据:
class ViewController: NSViewController {
var dataToPass: String = "DataToPass"
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func loginButton(_ sender: Any) {
performSegue(withIdentifier: NSStoryboardSegue.Identifier(rawValue: "segueIdentifier"), sender: self)
}
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
if segue.identifier!.rawValue == "segueIdentifier" {
let destinationViewController = segue.destinationController as! ViewController2
destinationViewController.dataToReceive = dataToPass
}
}
}
class ViewController2: NSViewController {
var dataToReceive: String
override func viewDidLoad() {
super.viewDidLoad()
}
}
通过此代码,您将使用覆盖 viewWillAppear
class ViewController: NSViewController {
var dataToPass: String = "DataToPass"
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear() {
performSegue(withIdentifier: NSStoryboardSegue.Identifier(rawValue: "segueIdentifier"), sender: self)
}
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
if segue.identifier!.rawValue == "segueIdentifier" {
let destinationViewController = segue.destinationController as! ViewController2
destinationViewController.dataToReceive = dataToPass
}
}
}
class ViewController2: NSViewController {
var dataToReceive: String
override func viewDidLoad() {
super.viewDidLoad()
}
}
在这两种情况下,您都需要确保要传递给另一个 View Controller 的数据不为空。
关于swift - 使用数据在 2 个不同的 NSViewController 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48668457/