找出运行时是不是存在 XIB
Posted
技术标签:
【中文标题】找出运行时是不是存在 XIB【英文标题】:Find out if XIB exists at runtime找出运行时是否存在 XIB 【发布时间】:2014-03-11 10:10:23 【问题描述】:还有办法吗?
我在 NSBundle 上尝试过pathForResource:ofType:
,但当它真的存在时它却找不到 xib。如果我尝试加载它并且它不存在 loadNibNamed:owner:options:
崩溃,nibWithNibName:bundle:
也是如此
基本上,我想知道在运行时我应该为集合视图上的给定单元格类型注册一个 xib 还是只注册一个类。
【问题讨论】:
“我在 NSBundle 上试过 pathForResource:ofType:”,什么意思? @Danyun 我已经编辑了回复。 【参考方案1】:您确定pathForResource:ofType:
不起作用吗?这不仅仅是常见的 xib / nib 混淆?
(.xib 文件为 ofType:@"nib"
)...
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *path = [mainBundle pathForResource:@"crapXib" ofType:@"nib"]; // file is called crapXib.xib
if (path)
// whatever...
else
// whatever else
【讨论】:
它有效。列出主包中的所有文件,您将看到 *.xib 更改为 *.nib【参考方案2】:您可以尝试使用NSFileManager
来检查文件是否存在,如果应用程序未本地化,则所有.nibs
都位于.ipa
的根目录中,例如:
NSString * root = [[NSBundle mainBundle] resourcePath];
if ([[NSFileManager defaultManager] fileExistsAtPath: [root stringByAppendingPathComponent:@"MainViewController.nib"]])
// exisits
【讨论】:
@Daij-Djan,感谢您的评论,您认为使用pathForResource:ofType:inDirectory:forLocalization:
更好吗?
no pathForResource:ofType:
自动检查语言。你需要多次致电pathForResource:ofType:inDirectory:forLocalization:
来弥补它以上是关于找出运行时是不是存在 XIB的主要内容,如果未能解决你的问题,请参考以下文章
.Xib 在使用 Xcode 4.6.1 运行项目时产生错误
用户定义的运行时属性导致来自 xib 的 EXC_BAD_ACCESS