2

A:ChildViewController:

[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];

B: 親ViewController:

[self dismissViewControllerAnimated:YES completion:nil];

A と B の違いは何ですか?

4

1 に答える 1

-2

dismissModalViewControllerAnimated:は廃止された API であり、よりブロックベースの API に移行する前に Apple によって公開されました。Vizlix とは異なり、dismissModalViewControllerAnimated:絶対に使用しないでください。それを使用するといくつかの特有の副作用があり、 と を使用すると消えるため、Apple ではもはやメンテナンスされていないか、少なくとも適切ではありませpresentViewController:animated:completion:dismissViewControllerAnimated:completion:。古い API は、古い iOS バージョンのみを対象とする特定のコード パスでのみ使用する必要があります。私が話している副作用は、少なくとも iOS6 からのものです。

その上、ブロックベースの API は、古いスタイルの API では不可能な機能を提供します (たとえば、push;pop API に欠けている機能)。ビュー コントローラ イベントのチェーンを作成する必要があると想像してください。アニメーションがいつ終了したかを知らずに、別のアニメーションの進行中に別のアニメーションを実行すると、バグが発生する可能性が高くなります。ブロックベースの API を使用すると、このようなイベントを簡単に連鎖させることができます。

于 2013-10-15T10:48:25.907 に答える