web-dev-qa-db-ja.com

presentModalViewControllerとpresentViewControllerの違いは?

IOS 5 SDKには、UIViewControllerのメソッドとしてpresentModalViewController:animated:とpresentViewController:animated:completion:の2つがあります。

これら2つの方法の違いは何ですか?

ドキュメントは言う:presentViewController:animated:completion:メソッドは、iOS 5.0でモーダルビューを表示するための推奨される方法です。

IOS 5でpresentModalViewController:animatedを使用すると、バグが発生しますか?

それらは機能的に同じですか?

24
YuAo

彼らはApple documentation が指摘するのと同じことをしているようです、iOS 5.0以降、presentViewControllerはビューコントローラを提示するための推奨される方法です。そのpresentViewControllerでは、完了ハンドラを使用できるようになりましたが、以前はそれがありませんでした。

また、すべての古いアプリで問題となり、後方互換性が非常に低いバグが発生した場合、iOS 5.0では古いpresentModalViewControllerは問題ありません。さらに、presentViewControllerを使用すると、presentingViewControllerpresentedViewControllerプロパティがあるため、viewController階層に関する詳細情報を取得できるようになりました。

24
Daniel

別の重要な注意点は、UIKitフレームワークのUIViewController.h(Xcodeバージョン4.3.1)で述べられているように、presentModalViewControllerは将来廃止される予定です。

// Display another view controller as a modal child. Uses a vertical sheet transition if animated.This method has been replaced by presentViewController:animated:completion:
// It will be DEPRECATED, plan accordingly.
- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated; 

// Dismiss the current modal child. Uses a vertical sheet transition if animated. This method has been replaced by dismissViewControllerAnimated:completion:
// It will be DEPRECATED, plan accordingly.
- (void)dismissModalViewControllerAnimated:(BOOL)animated;
13
Dat Nguyen