无法将 xib 文件添加到目标成员资格

Posted

技术标签:

【中文标题】无法将 xib 文件添加到目标成员资格【英文标题】:can't add xib file to target membership 【发布时间】:2017-04-19 14:33:20 【问题描述】:

我正在尝试将自定义窗口作为 .xib 文件添加到我现有的 OSX 项目中。当我添加 xib 文件时,我确保在“添加到目标”中选中了目标

但是,当我查看 xib 文件的属性时,它显示它不是所需目标组的一部分

The target isn't checked

然后我在构建阶段实验性地将 xib 文件添加到“复制文件”中。现在 xib 文件的属性看起来有点不同了,目标被选中但显示为灰色。

Checked but grayed out target group

现在当我尝试访问 xib 文件时,例如,使用

bool suc = [[NSBundle mainBundle] loadNibNamed:@"GiphyDialog" owner:nil topLevelObjects:nil];

它总是返回 false。

或者如果我尝试使用窗口控制器加载 xib 文件:

[[Windowcontroller alloc ]initWithWindowNibName:@"GiphyDialog"];
NSWindow* win = windowController.window;

即使正确配置了文件的所有者和窗口引用(在全新项目中成功测试),我总是无法加载窗口并显示消息 “未能加载窗口 nib 文件'GiphyDialog'。”

如何将 xib 文件正确添加到所需的目标?真的很奇怪,有了一个新创建的项目,我将xib文件添加到目标中没有问题,但是有了这个项目,它根本不起作用。我错过了什么?

【问题讨论】:

XIB 的部署目标设置为 10.10。我不知道这是怎么发生的,但它可能会导致问题(参见图片“未检查目标”) @shallowThought 感谢您的回复。我应该如何配置部署目标?其他选项是 macOS 10.x 及更高版本,x 范围从 6 到 12.1。我尝试了不同的选项,但没有改变灰色的问题 我的错误。我认为这是关于 ios 目标的。 也许可以尝试在你的初始化文件名​​中添加扩展名... 【参考方案1】:

Xibs 必须添加到 Copy Bundle Resources,而不是 Copy Files。

【讨论】:

【参考方案2】:

所以我设法找出问题所在。在我的 XCode 项目中,Build Phases 下没有Copy Bundle Resources。但是我可以通过点击Build Phases左上角的+按钮来添加它。将 xib 文件添加到 Copy Bundle Resources 然后修复我的问题。

【讨论】:

以上是关于无法将 xib 文件添加到目标成员资格的主要内容,如果未能解决你的问题,请参考以下文章

将 xib 添加到框架

自定义成员资格提供程序无法加载文件或程序集

如何将数据从应用程序显示到Today Extension Swift

将多个XIB文件添加到任何文件

Xcode 帮助 - 升级 iPad 的当前目标

今天的 iOS 扩展目标成员资格是容器类还是用户默认值?