ユニバーサル アプリで iOS 4 以降 (iPhone 3G の場合) をサポートしたい場合、View Controller を表示するより短い方法はありますか?
現在、私はこれを以下に持っていますが、特にView Controllerが画像を選択するためのものである場合、画像が選択されたときにポップオーバーを閉じる必要があるため、UIPopoverControllerプロパティが必要な方法が嫌いです。
@interface SASuccessViewController ()
@property (nonatomic, retain) UIPopoverController *myPopoverController;
@end
@implementation SASuccessViewController
-(void)showViewController:(UIBarButtonItem *)sender {
UIViewController *viewController = [[UIViewController alloc] init];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]) {
[self presentViewController:viewController animated:NO completion:nil];//iOS 5 and above
} else {
[self presentModalViewController:viewController animated:NO]; //iOS 4, deprecated in iOS 6
}
} else {
if (!self.myPopoverController) {
self.myPopoverController = [[[UIPopoverController alloc] initWithContentViewController:viewController] autorelease];
} else {
[self.myPopoverController setContentViewController:viewController];
}
[self.myPopoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
[viewController release];
}
-(void)dealloc {
[_popoverController release];
[super dealloc];
}
@end
iOS 4 が最新 (ユニバーサル アプリではない) だった場合、メソッドは次のようになります。
-(void)showViewController:(UIBarButtonItem *)sender {
UIViewController *viewController = [[UIViewController alloc] init];
[self presentModalViewController:viewController animated:NO];
[viewController release];
}
私が今持っているものはかなり肥大化しているようです。ユニバーサル アプリ (iOS 4 のサポートは言うまでもなく) でビュー コントローラーを表示するより良い方法はありますか?