首页 文章

推送UINavigationViewController并推送UIViewController(仅显示一个动画)

提问于
浏览
0

我有一个 UINavigationViewController ,根视图有一个 UITableViewController . 当用户选择单元格时, UIViewController 被推入 .

我的主 UIViewController 有一个按钮,以模态方式显示 UINavigationViewController ,但我还有另一个按钮,我想用它直接进入 UINavigationViewController 的推 UIViewController .

通过使用以下代码,显示两个动画,首先发生 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];
}];

这看起来不错,但我想要的是显示推送 UIViewController 只有1个动画(甚至没有动画),好像我的主视图呈现它,但保持功能,当用户按下这个 UIViewController 它回去到 UINavigationViewController .

如果我将"animated"都设置为NO,则 UIViewController 显示非常快,但仍然可以看到 UINavigationViewController 的一瞥 .

我遇到的一个可能的解决方案是获取主视图的"snapshot"并将其传递给 UINavigationViewController 以使用它来隐藏其内容,同时显示所需的 UIViewController .

注意:它适用于iOS 7和8

2 回答

  • 1

    在没有动画 before 呈现导航控制器的情况下推动视图控制器 .

  • 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];
    

相关问题