找出XIB是否在运行时存在

时间:2014-03-11 10:10:24

标签: ios macos cocoa xib nsbundle

无论如何都要这样做?

我在NSBundle上尝试了pathForResource:ofType:,当它真的存在时它找不到xib。如果我尝试加载它并且它不存在loadNibNamed:owner:options:崩溃,那么nibWithNibName:bundle:

基本上,我想在运行时知道是否应该在集合视图上为给定的单元格类型注册xib或类。

2 个答案:

答案 0 :(得分:3)

您确定pathForResource:ofType:无效吗?这不仅仅是常见的xib / nib混淆吗?

(。xib-files是ofType:@"nib")...

NSBundle *mainBundle = [NSBundle mainBundle];
NSString *path = [mainBundle pathForResource:@"crapXib" ofType:@"nib"]; // file is called crapXib.xib
if (path){
    // whatever...
} else{
    // whatever else
}

答案 1 :(得分:0)

您可以尝试使用NSFileManager来检查文件是否存在,如果应用程序未本地化,则所有.nibs都位于.ipa的根目录中,例如:

NSString * root = [[NSBundle mainBundle] resourcePath];
if ([[NSFileManager defaultManager] fileExistsAtPath: [root stringByAppendingPathComponent:@"MainViewController.nib"]])
{
    // exisits
}