如何为我的 iPhone 应用程序加载单独的 nib 文件,以检查用户是否拥有 iPhone 5/iPod Touch 4 英寸屏幕和 3.5 英寸屏幕?
这是在init方法中完成的吗?
详情
- 我没有为整个应用程序使用 Storyboard。在某一时刻,我确实使用了 Storyboard并从其中一个 View Controller 中调用它。 (有没有办法区分 Storyboard?)
最佳答案
我找到了办法!
宏
我从 https://stackoverflow.com/a/13068238/1492368 得到这个宏来自希望之光
#define HEIGHT_IPHONE_5 568
#define IS_IPHONE ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5 )
所以在新指定的初始化器initForLayout中:我写
if(IS_IPHONE_5)
{
self=[super initWithNibName:@"DetailViewControlleriPhone5" bundle:nil];
}
else
{
self=[super initWithNibName:@"DetailViewController" bundle:nil];
}
旧初始化程序
我从大 Nerd 牧场学到了这一点:
使用标准初始化程序时抛出异常
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
@throw [NSException exceptionWithName:@"Wrong initializer"
reason:@"Use initForLayout:"
userInfo:nil];
return nil;
}
从另一个 ViewController/AppDelegate 调用 View Controller
因此,当我从另一个 View Controller 或 appdelegate 调用此 DetailViewController 时,我会写:
DetailViewController *detailViewController = [[DetailViewController alloc] initForLayout];
关于ios - 如何为 iPhone 4 英寸和 iPhone 3.5 英寸加载单独的 NIB 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14144202/