我正在实例化一个视图控制器以进入我的表,当我试图在controllers视图中设置标签的stringValue时收到一个错误。

func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
    let postController = storyboard!.instantiateControllerWithIdentifier("post") as? PostController

    // This line causes the error.
    postController!.titleLabel.stringValue = "abc"

    return postController!.view
}

所有关于IBOutlets的设置都是正确的。我可以从PostController的viewDidLoad方法中成功地设置值。只有当我尝试使用实例化的控制器将它们设置到外部时,才会发生错误。我甚至创建了一个测试方法来充当setter,但也失败了。
func test(a: String) {
    self.titleLabel.stringValue = a
}

错误如下:
fatal error: unexpectedly found nil while unwrapping an Optional value

最佳答案

刚刚面对同样的问题,我想我已经解决了。试试这个:

//Maybe use as! to force this; if it doesn't load, you need to know about it
let postController = storyboard!.instantiateController(withIdentifier: "post") as! PostController

//Add this
postController.loadView()

postController!.titleLabel.stringValue = "abc"

我知道这篇文章已经过时了,但也许其他人会从中受益。

09-12 16:26