[iOS]UIViewのモーダル表示の方法が変わったことに今更気づく。(iOS5以降)

iPhoneアプリにて現在のViewに割り込んで別のViewをモーダル表示したい場合には「presentModalViewController」メソッドを使っていましたが、iOS6からは非推奨になっていました。iOS5以降に限られてしまいますが代替の方法として「presentViewController」メソッドを使えとのことです。以下によくあるパターンを例示しますのでご参考ください。

UINavigationController* nav = 
[[[UINavigationController alloc] initWithRootViewController:self] autorelease];
    
self.navigationItem.leftBarButtonItem  = 
[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelAction:)] autorelease];

self.navigationItem.rightBarButtonItem = 
[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave   target:self action:@selector(saveAction:)] autorelease];

//[parent presentModalViewController:nav animated:YES];
[parent presentViewController:nav animated:YES completion: nil];

2012-11-04 17:48追記

また、閉じる場合のコードも下記のようにセットで変更すると良いと思います。このメソッドは呼び出し元から使用します。


-(void)didCancel{
    [self dismissViewControllerAnimated:YES completion: nil];
}

全ソースはGitHubにアップしています。
harusou-apps/ModalViewSample

詳しくは公式日本語ドキュメントの「iOS View Controller プログラミングガイド」を参照(この場所って辿りづらい!)
日本語ドキュメント – Apple Developer

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>