Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用segues在NavigationController中嵌入UIViewController_Ios_Uinavigationcontroller_Uistoryboard_Uistoryboardsegue - Fatal编程技术网

Ios 使用segues在NavigationController中嵌入UIViewController

Ios 使用segues在NavigationController中嵌入UIViewController,ios,uinavigationcontroller,uistoryboard,uistoryboardsegue,Ios,Uinavigationcontroller,Uistoryboard,Uistoryboardsegue,我有一个viewController,它通常(最经常)是通过使用推送序列来访问的。此viewController需要嵌入到UINavigationController中。因此,这通常是没有问题的。推送序列管理推送viewController,因此viewController具有其UINavigationController 我的问题是,在一些情况下,我想使用模态segue呈现同样的viewController。执行此操作时,viewController未嵌入到navigationControll

我有一个viewController,它通常(最经常)是通过使用推送序列来访问的。此viewController需要嵌入到UINavigationController中。因此,这通常是没有问题的。推送序列管理推送viewController,因此viewController具有其UINavigationController

我的问题是,在一些情况下,我想使用模态segue呈现同样的viewController。执行此操作时,viewController未嵌入到navigationController中。有没有办法使用segues来实现这一点

我知道这可以通过创建UINavigationController,将rootView设置为viewController,然后以模态的方式呈现,在没有分段的代码中完成。这可以使用如下代码完成:

MyViewController *viewController = [[MyViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[self presentModalViewController:navController animated:YES];
但是除了使用Segues,我如何做同样的事情呢

更新
为了进一步澄清,这里有一些代码来补充我如何在prepareForSegue方法中使用接受的答案

使用模态序列时

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue destinationViewController] isEqualToString:@"Modal to MyVC"])
    {
        UINavigationController *nav = [segue destinationViewController];
        MyViewController *vc = [nav topViewController];
        //setup vc
    }
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue destinationViewController] isEqualToString:@"Push to MyVC"])
    {
        MyViewController *vc = [segue destinationViewController];
        //setup vc
    }
}
使用推送序列时

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue destinationViewController] isEqualToString:@"Modal to MyVC"])
    {
        UINavigationController *nav = [segue destinationViewController];
        MyViewController *vc = [nav topViewController];
        //setup vc
    }
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue destinationViewController] isEqualToString:@"Push to MyVC"])
    {
        MyViewController *vc = [segue destinationViewController];
        //setup vc
    }
}

在故事板中,您可以通过选择视图控制器,然后从顶部的菜单中选择
编辑器->嵌入->导航控制器,将视图控制器嵌入导航控制器中。从另一个视图控制器,控制拖动到此导航控制器,以设置
模式
序列。您还可以控制拖动到原始视图控制器,以便在不使用导航控制器的情况下设置到该视图控制器的分段


这非常有效!我用模态segues卡住了,这帮了我的忙。