ナビゲーションコントローラーを使用していて、新しいViewControllerがプッシュする前にアニメーションを実行しようとしています。これを行うために、UINavigationControllerデリゲートからイベントをキャッチし、アニメーションを実行しています。とは言うものの、明らかにiOSアニメーションは非同期で実行されることを意図しているため、メソッドが返され、私のアニメーションは標準のプッシュアニメーションと同時に実行されます。これを回避する方法について何か考えはありますか?
状況は次のようになります。
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if (animated)
{
[UIView animateWithDuration:kGFDefaultAnimationDuration
delay:0.0
options:UIViewAnimationCurveEaseOut | UIViewAnimationOptionAllowUserInteraction
animations:^{
// Set up animations here...
}
completion:^(BOOL finished) {
}];
}
}
navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
つまり、完了ブロック内から戻りたいのです。