如何从另一个NSView更改NSTextField值(不同的swift文件)
问题描述:
我有两个不同的NSViews。
viewA从ViewA.swift
控制viewB从控制ViewB.swift
我想从viewA改变文本框(的NSTextField)是在viewB。
如何从另一个NSView更改NSTextField值(不同的swift文件)
我改变它从创造实例viewB viewA,但我得到一个错误
这里是我在创建实例viewA:
let myViewB = ViewB()
myViewB.changeValue = myString
并在viewB我宣布:
var myString = "" {
didSet {
myNSTextField.stringValue(myString)
}
}
这是我得到的错误,当我改变的NSTextField值:
意外发现零而展开的可选值
UPDATE:
file 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
....
}
...
}
答
我终于修好了!我创建一个包含它需要改变它的文本喜欢这一个变量:(用你的测试项目)
在课堂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.
}
}
答
在你的代码生成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 "()")
}
}
我接受这样回答这样的问题:http://*.com/questions/35994684/how-to-get-access-to-property-from-another-class-without-inheritance/35995530#35995530 – Eric
所以我应该但是'让myViewB = ChooseEdit()'在课程外部。但我得到同样的错误。 – Danny182
不,你应该为你生成一个CLASS对象(类似'var myViewB = viewB()'),然后你可以通过执行'var textfield = myviewB.myNextField'来访问viewB的属性' – Eric