可以使用 Storyboard / NSViewController 而不是 XIB 文件来定义自定义视图吗

Is it okay to define a custom view using Storyboard / NSViewController instead of XIB file

我总是觉得在 XIB 文件中定义自定义 NSView 有点烦人(因为找不到更好的词)。 我已经切换到使用自定义故事板(每个 class 一个)和相应的 NSViewController。将视图添加到我的层次结构时,我只是使用如下所示的代码:

let viewController: CustomViewController = // Use my custom extensions to instantiate the NSViewController subclass.
self.view.addSubview(viewController.view)

有什么缺点吗?使用这种方法是否可以或是否有任何缺点(可能 NSViewController 实例接收额外的事件或默认情况下以某种方式添加到另一个层次结构)。

作为一般规则,情节提要中的视图控制器由其控制器中的代码支持 class。

.instantiateViewController(...) 然后用于从 Storyboard 加载视图控制器并且:

  • 推一下
  • 展示它
  • 将其添加为子视图控制器,最常见的是将其视图添加到当前层次结构中

如果您 有支持该视图控制器的代码,并且您没有将其添加为子视图控制器或将其分配给 class var/property ,那么一旦 viewController 超出范围,控制器代码将不再存在。如果您已将任何 UI 元素连接到该控制器 class,或者您需要调用该 class 中的任何函数,您将 运行 遇到问题。

但是,假设您没有有任何代码与之关联VC,那么它实际上在功能上等同于在 XIB 中设计视图并使用 from 实例化它生成的笔尖。