我有一个 UINavigationViewController ,它有一个 UITableViewController 和root视图。当用户选择一个单元格时,会推入 UIViewController 。
My Main UIViewController 有一个按钮,以模态方式显示 UINavigationViewController ,但我还有另一个按钮,我想用它来直接进入推送的 UIViewController UINavigationViewController 。。
通过使用以下代码,两个动画都会显示, UINavigationViewController 首先发生,完成后会发生 UIViewController 。
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
UINavigationController *navController = [mainStoryboard instantiateViewControllerWithIdentifier: @"SettingsNavigationController"];
UIViewController *viewController = [mainStoryboard instantiateViewControllerWithIdentifier: @"MyInfoViewController"];
[self presentViewController:navController
animated:YES
completion:^
{
[navController pushViewController:viewController animated:YES];
}];
这看起来不错,但我想要的是只用1个动画(甚至没有动画)显示推送的 UIViewController ,好像我的主视图正在呈现它,但保持功能的时候用户按下 UIViewController ,返回 UINavigationViewController 。
如果我同时设置"动画"为NO, UIViewController 显示非常快,但仍然可以看到 UINavigationViewController 的一瞥。
我遇到的一个可能的解决方案是拍摄"快照"主视图并将其传递给 UINavigationViewController ,以便在想要的 UIViewController 出现时使用它隐藏其内容。
注意:它适用于iOS 7和8
答案 0 :(得分:1)
在呈现导航控制器之前,不使用动画推动视图控制器。
答案 1 :(得分:1)
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
UINavigationController *navController = [mainStoryboard instantiateViewControllerWithIdentifier: @"SettingsNavigationController"];
UIViewController *viewController = [mainStoryboard instantiateViewControllerWithIdentifier: @"MyInfoViewController"];
[navController pushViewController:viewController animated:NO];
[self presentViewController:navController animated:YES completion:nil];