我遇到一个问题,即使我的NSTextField IBOutlets连接到情节提要板,它们也显示为nil。在下面的简化示例中,我有一个按钮,当按下该按钮时,应列出3个文本标签的字符串值。
这是按钮的代码:
import Foundation
import Cocoa
class ViewController: NSObject{
@IBAction func pushButton(sender: AnyObject) {
let oneText = Texts()
oneText.listTextFields()
}
}
这是NSTextField列表的代码:
import Foundation
import Cocoa
class Texts: NSObject{
@IBOutlet weak var l1: NSTextField!
@IBOutlet weak var l2: NSTextField!
@IBOutlet weak var l3: NSTextField!
var textArray = [NSTextField]()
func listTextFields (){
self.textArray = [self.l1,self.l2,self.l3]
for var i = 0; i < textArray.count; i++ {
let text = textArray[i]
print(text.stringValue)
}
}
}
我已经验证了IBOutlets都已连接,但是在运行程序并按下按钮时,出现“致命错误:在展开可选值时意外发现nil”消息。查看调试器,看起来树NSTextfields为“ nil”。
我究竟做错了什么?
最佳答案
您不是从情节提要中加载Texts
,所以它对您的销售渠道一无所知。 Texts()
创建该对象的新实例,然后在其上调用该方法。
您可能在界面生成器中的某个地方已有一个Texts
对象,ViewController
应该对此有一个出口。
关于swift - 引用IBOutlets时的零值-swift, cocoa ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34020856/