使用 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 名称未更改的主要内容,如果未能解决你的问题,请参考以下文章
NSInternalInconsistencyException 未捕获的异常“NSInternalInconsistencyException”,原因:“无法在包中加载 NIB:带有名称的 NSBu