【问题标题】:Setting stringValue of a View Controllers label causes "found nil" error设置视图控制器标签的 stringValue 会导致“found nil”错误
【发布时间】:2015-01-26 01:24:37
【问题描述】:

我正在实例化一个视图控制器以进入我的表,当我尝试在控制器视图中设置标签的 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

【问题讨论】:

  • 您的代码中究竟发生了什么?靠近postController!
  • 我设置值的这一行:postController!.titleLabel.stringValue = postData["title"].stringValue
  • titleLabel 是 UILabel 吗? UILabel 没有stringValue 属性。你有 UILabel 的子类吗?
  • @Jawwad 不,它是一个 NSTextField。这是一个 OS X 项目,而不是 iOS。

标签: macos swift nsviewcontroller


【解决方案1】:

刚刚遇到同样的问题,我想我明白了。试试这个:

//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"

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多