【问题标题】:How exactly does an NSView, an NSViewController, and MainMenu.xib fit together?NSView、NSViewController 和 MainMenu.xib 究竟是如何组合在一起的?
【发布时间】:2013-11-04 04:09:01
【问题描述】:

我要切入正题:我的应用程序已经增长了很多,现在我认为是时候进行一些整理了。我想将我的一些视图从我的 MainMenu.xib 文件中分离到他们自己的 Nib 文件中。让我绊倒的部分是整个“界面生成器+我的代码”。这是我到目前为止所做的:

  1. 我添加了一个视图控制器代理对象:

  2. 在 Identity 检查器中,我已将视图控制器的类名添加到自定义类字段中。

  3. 在 Attributes 检查器中,我输入了要加载的 Nib 的名称。

  4. 我已将视图控制器对象的 view 出口连接到 MainMenu.xib 中的现有视图。

  5. 最后,我按 Cmd+R,但我的视图不存在。
    [在此处插入 FFFFUUUUU 模因图像。]

我错过了什么?在过去的两周里,我日复一日地盯着我的 Mac,所以如果我完全遗漏了一些东西,我不会感到惊讶。如果有人看到我的 n00b 方式并愿意为我指明正确的方向,我将非常感激。谢谢。

【问题讨论】:

  • 我不太清楚你所说的“我的观点不存在”是什么意思。那你作为IBOutlet view 连接了什么?您需要在要添加子视图的任何视图上显式调用 addSubview:。

标签: cocoa interface-builder nsview nib nsviewcontroller


【解决方案1】:

你几乎明白了。

我在 Github 上发布了一个demo-project,仅供您参考;)


最后,您需要将视图实际添加到窗口中。在您的AppDelegate 中执行此操作, 或任何您认为合适的地方。

- (void)awakeFromNib {
    [self.window.contentView addSubview:self.customViewController.view];
    [self.customViewController.view setFrame:[self.window.contentView bounds]];
}

当然,您首先需要为您的视图控制器制作一个插座:

@property (assign) IBOutlet ITCustomViewController *customViewController;

【讨论】:

  • 谢谢你,伙计!也许您应该成为 Apple 的文档编写者和演示应用程序创建者。我不知道为什么每个人都认为 Apple 的文档如此出色。它在很多领域都缺乏,而且有一半的时间,他们的演示应用程序使用了已弃用的方法!我知道 SO 不喜欢 cmets 用于“感谢人”,但我不在乎:感谢您花时间帮助一个新面孔的 Cocoa Maker,NSAddict!
  • @BenStock Apple 文档实际上非常棒,它们只是涵盖了更深入的内容。但我同意你的观点,当你尝试使用 Cocoa 时,它们并没有多大帮助。当我开始使用 ObjC 进行开发时,我认为 Youtube-Channel 非常有用。
猜你喜欢
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
相关资源
最近更新 更多