使用 xcode 重构的 NIB 名称未更改

Posted

技术标签:

【中文标题】使用 xcode 重构的 NIB 名称未更改【英文标题】:NIB Name Unchanged Using xcode refactor 【发布时间】:2012-04-01 15:32:02 【问题描述】:

我使用 xcode 重构来更改 ViewController 的名称。我在 .h 文件中突出显示了控制器名称,然后使用 Edit>Refactor>Rename。一切都已正确更改,包括 .xib 文件的名称。但是,当我使用 initWithNibName 加载笔尖时:无法识别新名称。我仍然必须提供控制器旧名称的字符串值。

我曾尝试使用 XML 编辑器在 .xib 文件中搜索旧名称,希望能在此处进行更改。没有运气。

有人知道如何更改 nib 名称,使其与 .xib 文件的新文件名匹配吗?

[我使用的是 xcode 4.2]

【问题讨论】:

你试过清理你的项目吗? 【参考方案1】:

XCode 不会更改对使用文字字符串的 initWithNibName 的调用(例如 initWithNibName:@"FooViewController withBundle:nil])。这就是我倾向于这样编写代码的原因之一:initWithNibName:NSStringFromClass([FooViewController class]) withBundle:nil 所以请在您的代码中查找任何使用文字字符串的调用。

快速编辑:但我想到您可能已经手动更改了它。在这种情况下,请快速卸载并清理项目。

【讨论】:

不需要手动调用NSStringFromClass。如果要加载与类同名的 nib,可以使用 nil 作为 nib 名称。 是的,你也可以这样做,但有时它不适合我...我不知道为什么 > 您的快速编辑找到了我问题的根源。如果我将字符串文字更改为新的 nib 名称,我会在 initWithName 中遇到故障。我已经重新安装并清理了无济于事。表明某处旧名称仍在用于笔尖。那个旧名字的存放地点是个谜。但是,我接受了 Sven 的建议,并在 initWithNibName: 中将 nil 用作笔尖名称:它工作正常。我不知道你能做到这一点!所以旧名称仍然埋在某个地方,但我不会担心它,因为它没有显示在我的代码中。

以上是关于使用 xcode 重构的 NIB 名称未更改的主要内容,如果未能解决你的问题,请参考以下文章

更改主 nib 文件基本名称、可执行文件名称和更新应用程序

NSInternalInconsistencyException 未捕获的异常“NSInternalInconsistencyException”,原因:“无法在包中加载 NIB:带有名称的 NSBu

重命名项目Xcode后显示红色的新项目名称和未显示的文件

Xcode 未构建包含更改的应用程序

Cocoa (Xcode 4),从另一个 NIB 更改一个 NIB 上的标签

Xcode 6 中的 iCloud 容器名称前缀更改