我找到了一種方法!
- 我使單獨的榫文件,一個用於3.5"/iPhone非視網膜和一個用於iPhone5的
- 我使用宏來檢查當前電話是一個iPhone 5格式與否。(1)
- 對於普通initWithNibName:包:我寫一個例外,這樣它們不使用正常初始化我命名爲@「初始化錯誤」
- 我創建了一個新的指定初始化爲的viewController其命名爲initForFormat:
- 我使用我的宏,並檢查如果設備是iPhone 5或不。如果它是iphone5然後我筆尖名初始化ViewControllerIphone5
宏 我這個宏從https://stackoverflow.com/a/13068238/1492368從RayOfHope
#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];
}
舊的初始化程序
使用標準的初始化
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
@throw [NSException exceptionWithName:@"Wrong initializer"
reason:@"Use initForLayout:"
userInfo:nil];
return nil;
}
從另一個視圖控制器/ AppDelegate中 因此調用視圖控制器,當我從另一個視圖控制器調用此DetailViewController時 拋出一個異常:
我瞭解到這個來自大書呆子牧場或者我的appdelegate寫:
DetailViewController *detailViewController = [[DetailViewController alloc] initForLayout];