如何在macOS上编写没有界面构建器的NSViewController。

在上一篇文章中,我写过关于在Cocoa中为常规NSView设置背景色的信息。 因此,要想打个比方 ,我想分享如何制作NSViewController而不使用笔尖/ xib或情节提要。 这似乎是一件微不足道的任务,确实如此。 但是,在没有先验知识的情况下,您可能会很快发现一个基本的陷阱。 让我们在旅途中展示这个节目,看看一些代码。

就像上一篇文章一样,我将分享如何在iOS中完成此操作。

在这里,我们有一个名为MyViewControllerNSViewController子类。 空视图控制器在这里没有什么特别有趣的。 非常简单!

让我们为macOS尝试相同的示例,看看会发生什么。

看起来一样,应该表现得一样吗? 好吧,也许有人会假定,但是,这会给您以下日志消息:

-[NSNib _initWithNibNamed:bundle:options:]无法加载捆绑中的nibName:Apex.ViewController(空)。

就像消息中所述,您的视图控制器无法加载,导致其无法显示。
其原因是寻找显然不存在的nib文件。 由于接口构建器已深度集成到Cocoa的体系结构中,因此笔尖是macOS中的默认设置。 这意味着您必须做一些额外的工作才能使其正常工作。 幸运的是,它涉及的更改很少。

这里缺少的是视图控制器视图,要修复它,我们需要实现loadView方法。 因此,让我们看另一个示例,其中我们有一个不使用接口生成器的有效NSViewController实现。

就是这样,您现在可以在不使用NIB的情况下创建视图控制器。 编码愉快!