1

我在 NavigationController 中有 2 个 UIViewController。

第一个,A,在 tableView 顶部只有一个 UISearchBar,作为 tableHeader。第二个,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 后的几分之一秒内,仍然可以看到 B 自定义 tableHeader,从左边框移动了 10 个点。

我应该在 viewWillDisappear 中管理从 B 到 A 的过渡,还是我这样做完全错误?如果我错了,处理弹出动画的正确方法是什么?

谢谢

尼古拉

4

1 回答 1

0

你为什么不在你的 viewWillDisappear 中尝试这个并检查它是否有效?

UIViewController *vcA = [UIViewController alloc] init];

[[self retain] autorelease];

[self.navigationController pushViewController: vcA animated: NO];

[UIView transitionWithView:self.navigationController.view
       duration:0.8
       options:UIViewAnimationOptionTransitionFlipFromLeft
       animations:nil
       completion:nil];
[self.navigationController popViewControllerAnimated:NO];

这是经过测试的代码。所以它工作正常。这应该可以帮助你。

于 2013-03-14T08:58:53.107 回答