1

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 への移行を管理する必要がありますか、それともこれを行うのは完全に間違っていますか? 私が間違っている場合、ポップアニメーションを処理する正しい方法は何ですか?

ありがとう

ニコラ

4

1 に答える 1