【问题标题】:'viewDidLoad' not declared in NSViewController?'viewDidLoad' 没有在 NSViewController 中声明?
【发布时间】:2014-10-13 17:29:55
【问题描述】:

我是可可和 Objective-c 的新手。 我正在尝试构建一个 mac 应用程序,当我尝试创建一个继承自 NSViewController 的新控制器时,它会自动在 .m 文件中给我一个 - (void)viewDidLoad(但不在 .h 中)。问题是编译器总是喊着说“‘NSViewContoller’没有可见的@interface声明选择器‘viewDidLoad’。

这怎么可能?请帮助我了解这里发生了什么以及如何解决它。 谢谢。

【问题讨论】:

    标签: objective-c macos cocoa nsviewcontroller


    【解决方案1】:

    只有当你的目标是 OSX Yosemite 及更高版本时,NSViewController 才支持 ViewDidLoad!如果您的应用定位在优胜美地下方,请将其删除,并改用 -awakeFromNib-loadView 方法。

    正如您在Apple's NSViewController Reference 中看到的那样 它是

    Available in OS X v10.10 and later.

    P.S 这发生在我为 OSX Mevericks 及更高版本开发应用程序时,当我从 NSViewController 继承一个类时,Xcode 6 自动为我生成 ViewDidLoad 方法,这实际上是一个错误(我认为)

    【讨论】:

    • 见:stackoverflow.com/questions/30174952/…>
    【解决方案2】:

    来自苹果的文档,方法NSViewDidLoad

    "对于源自 nib 文件的视图控制器,此方法是 在设置视图属性后立即调用。为了一个视图 以编程方式创建的控制器,立即调用此方法 loadView 方法完成后。”

    您需要在 .h 中创建一个方法以便在您的应用中查看。

    【讨论】:

      猜你喜欢
      • 2011-03-26
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 2023-01-13
      • 1970-01-01
      • 2019-10-30
      相关资源
      最近更新 更多