ViewControllerのiPhone/iPadユニバーサル化
iPhone、iPadでほとんど同じ画面を実装する際に、
今までは.h、.m、.xibファイルをそれぞれ個別に作成していました。
機能や操作はほとんど同じなのに、ただレイアウトが
iPhoneとiPadで異なる、という状況でこのようにしてました。
しかし実は、別々にするのはxibファイルだけで良かったことが分かりました。
- 共通
- MyViewController.h
- MyViewController.m
- iPhone用
- MyViewController_iPhone.xib
- iPad用
- MyViewController_iPad.xib
この場合、ViewControllerのインスタンスは、以下のように生成することになります。
MyViewController *viewController; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { viewController = [[[MyViewController alloc] initWithNibName:@"MyViewController_iPhone" bundle:nil] autorelease]; } else { viewController = [[[MyViewController alloc] initWithNibName:@"MyViewController_iPad" bundle:nil] autorelease]; }
こうすることで、レイアウトのみ別々のxibファイルで指定出来て、
機能や操作の実装は共通化出来るので良いですね。