【问题标题】: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 我已经编辑了回复。

标签: ios macos cocoa xib nsbundle


【解决方案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: 来弥补它
猜你喜欢
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-08
  • 2010-10-29
相关资源
最近更新 更多