我正在编写一个storyBoard加载系统,我需要检查是否存在特定的storyBoard。
我做了一个函数检查它(给定一个特定的StoryBoard名称):
(NSString *)ressourceNameForDevice:(NSString *)rootName extension:(NSString *)ext
{
NSString *retString = rootName;
NSString *iPadString = [NSString stringWithFormat:@"%@-iPad", rootName];
NSString *iPhoneWideString = [NSString stringWithFormat:@"%@-wide", rootName];
if (IS_IPAD &&
(nil != [[NSBundle mainBundle] pathForResource:iPadString ofType:ext]))
{
retString = iPadString;
}
if (IS_IPHONE_WIDE &&
(nil != [[NSBundle mainBundle] pathForResource:iPhoneWideString ofType:ext]))
{
retString = iPhoneWideString;
}
return retString;
}
我用@"storyboard"
作为扩展参数调用此函数。
我的问题是该函数在nil != [[NSBundle mainBundle] pathForResource:iPhoneWideString ofType:ext]
上失败,即使我的项目和包中存在storyBoard IS ,它也找不到。我想我应该给它另一个扩展,我尝试了@"nib"
,但没有更多结果。
任何人都知道如何检查?
答案 0 :(得分:6)
解决了它。问题是,一旦storyBoard被编译,资源扩展名不是.storyboard
而是.storyboardc
,与.xib
编译文件具有.nib
扩展名的方式相同。
答案 1 :(得分:-1)
假设你的项目中有“xyz.storyboard”要加载。然后把它写成:
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"xyz"
bundle: nil];
应该做到这一点。