我有两个不同的 NSViews 。 viewA 由 ViewA.swift 控制 viewB < / strong>由 ViewB.swift 控制。我想从更改 viewB 中的textField( NSTextField ) viewA 即可。
我通过从 viewA 创建 viewB 的实例来更改它,但是我收到了错误
以下是我在 viewA 中创建实例的方法:
let myViewB = ViewB()
myViewB.changeValue = myString
在 viewB 中声明:
var myString = "" {
didSet {
myNSTextField.stringValue(myString)
}
}
这是我更改 NSTextField 值时出现的错误:
在解包可选值时意外发现nil
UPDATE:
档案ViewB.swift
class ViewB: NSView {
...
@IBOutlet weak var widthTextField: NSTextField!
...
}
档案ViewA.swift
let myViewB = ViewB()
class ViewA: NSView {
...
if *statement* {
....
myViewB.widthTextField.stringValue("try") // <- here i get the error
....
}
...
}
答案 0 :(得分:1)
我终于修好了!我创建了一个变量,其中包含将其更改为需要的文本:(使用您的测试项目)
在ViewA课程中
import Cocoa
var textToSet = "Hello"
class ViewA: NSView {
override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)
// Drawing code here.
}
@IBAction func editPressed(sender: AnyObject) {
textToSet = "No"
}
}
在ViewB课程中
import Cocoa
class ViewB: NSView{
@IBOutlet var myTextField: NSTextField!
override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)
myTextField.stringValue = textToSet
// Drawing code here.
}
}
答案 1 :(得分:0)
在你的代码中,你生成了一个stringValue的新对象(我想)。它有效吗?
class ViewB: NSView {
@IBOutlet weak var widthTextField: NSTextField!
}
let myViewB = ViewB()
class ViewA: NSView {
if *statement* {
myViewB.widthTextField.stringValue = "try" //setting it "try" without recreating the stringValue (done by "()")
}
}