我正在制作一个应用程序的原型,我希望有多个 .nib 布局文件,让朋友们尝试不同的布局,看看哪种布局最适合他们。
我已经有代码可以在已知 .nib 文件的硬编码数组之间正确切换,但我想全面扩展我的知识,所以我想我只是尝试编写一个可以在包中找到所有 .nib 文件的通用系统,所以我如果我添加新的 .nib 布局,则不必更改任何代码。
我看到给定资源的路径实际上是完整路径。就像是:
/var/mobile/Applications/69B85DBB-3B79-43F0-B88E-FFFF/TestApp.app/en.lproj/some_asset.nib
我尝试使用完整路径名加载 .nib ,但据我所知它不起作用。似乎唯一可行的方法是剥离路径和扩展名以获取资源名称?
如果是这样,那么我有以下内容:
NSArray *availableNibs = [[NSBundle mainBundle] pathsForResourcesOfType:@"nib"
inDirectory:nil];
// Just grab the first .nib as a test and remove the .nib extension
NSString *aNib = [availableNibs[0] stringByReplacingOccurrencesOfString:@".nib"
withString:@""];
// Start at the end of the string and find the first '/'
for (NSInteger index = [aNib length] - 1; index >= 0; --index) {
if ([aNib characterAtIndex:index] == '/' ) {
// Get us down to the resource name - return string starting after that '/'
aNib = [aNib substringFromIndex:index + 1];
break;
}
}
// have resource name in 'aNib', so open
self.viewController = [[My_ViewController alloc] initWithNibName:aNib
bundle:nil];
也许我的期望是错误的,但这似乎比我预期的要笨拙?有没有更简单的方法来提取资源名称,也许使用更少的代码?
一般来说,在尝试做这种事情时我可能会意识到其他任何陷阱,或者这是否是大致正确的方法?
提前喝彩