1. ホーム
  2. ios

[解決済み] popViewController の完了ブロック

2022-07-29 15:30:30

質問

モーダルビューコントローラを解除する際に dismissViewController を使用してモーダルビューコントローラーを終了させる場合、完了ブロックを提供するオプションがあります。同様の機能を持つ popViewController ?

補完引数は非常に便利です。たとえば、モーダルが画面外に出るまでテーブルビューから行を削除するのを保留し、ユーザーに行のアニメーションを見せるために使用することができます。プッシュされたビューコントローラーから戻るとき、同じ機会を得たいと思います。

を配置することを試みました。 popViewController の中に UIView アニメーションブロックの中で、私は補完ブロックにアクセスすることができます。しかし、これはポップアップされるビューに望ましくない副作用を発生させます。

利用可能なそのようなメソッドがない場合、いくつかの回避策がありますか?

どのように解決するのですか?

2年以上前に回答があったことは知っていますが、この回答は不完全なものです。

あなたが望んでいることをすぐに実行する方法はありません。

これは技術的に正しいです。 UINavigationController API はこのためのオプションを提供していないためです。しかし、CoreAnimation フレームワークを使用することで、基礎となるアニメーションに補完ブロックを追加することが可能です。

[CATransaction begin];
[CATransaction setCompletionBlock:^{
    // handle completion here
}];

[self.navigationController popViewControllerAnimated:YES];

[CATransaction commit];

で使用されるアニメーションが終了すると、補完ブロックが呼び出されます。 popViewControllerAnimated: が終了した時点で呼び出されます。この機能は iOS 4 から利用可能です。