所以当我遇到这个问题时,我今天正在编写我的应用程序。 当我调用变量NSString" hello"从我的第二个视图控制器,我可以轻松地从我的第一个视图控制器打印它。但问题是,当我尝试访问变量NSTextField时,我得到的错误是nil或其他错误。我怎么能做到这一点?
第二视图控制器:
class ViewController: NSViewController {
@IBOutlet weak var txtDetail: NSTextField?
@IBOutlet weak var txtTitle: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
}
第一视图控制器
let shared = ViewController()
class AddUrlViewController: NSViewController {
@IBAction func readIt(sender: NSButton) {
println(shared.txtTitle.stringValue)
}
}
答案 0 :(得分:0)
你的问题不是特定于swift。我还没有快速学习,但答案同时适用于Objective-C和swift。
简短的回答:不要。您应该将另一个视图控制器的视图视为私有。这是OOD的一个重要原则的例子,称为封装。
相反,将字符串属性传递给另一个视图控制器。然后,在其他视图控制器的viewWillAppear方法中(假设它是一个全屏VC)将字符串复制到字段中。
如果在设置字符串值时视图可能在屏幕上,请实现自定义设置器并在设置器中设置文本字段的内容。