NavigationController 内に 2 つの UIViewControllers があります。
最初の A には、tableHeader として、tableView の上に UISearchBar だけがあります。2 つ目の B には、画面の上部にビューがあり (カスタム TableHeader と呼びましょう)、このビューの下にテーブルがあります。
UIViewController A から UIViewControllerB にプッシュするときにモーダル transitionFlipFromRight をシミュレートし、ユーザーが navigationItem.backBarButtonItem をタップしたときに UIViewController B から UIViewController A にポップするときにモーダル transitionFlipFromLeft をシミュレートしたいと考えていました。
プッシュ側は問題ありません:
UIViewController *vcB = [UIViewController alloc] init];
[self.navigationController pushViewController: vcB animated: NO];
[UIView transitionWithView:self.navigationController.view
duration:0.8
options:UIViewAnimationOptionTransitionFlipFromRight
animations:nil
completion:nil];
期待どおりに動作します。
ポップ、UIViewController B から UIViewController A への切り替えの実装に問題があります。
このコードを UIViewController B に追加しました。
-(void) viewWillDisappear: (BOOL) animated
{
[super viewWilDisappear: NO]
[UIView transitionWithView:self.navigationController.view
duration:0.8
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:nil
completion:nil];
}
フリップは確認できますが、結果には満足できません。なぜなら、B から AI に切り替えた後のほんの一瞬、左の境界線から 10 ポイント移動した B カスタム tableHeader がまだ見えるからです。
viewWillDisappear で B から A への移行を管理する必要がありますか、それともこれを行うのは完全に間違っていますか? 私が間違っている場合、ポップアニメーションを処理する正しい方法は何ですか?
ありがとう
ニコラ