簡體   English   中英

使用segues將UIViewController嵌入NavigationNavigator中

[英]Embed a UIViewController in a NavigationController using segues

我有一個viewController 通常 (最經常)通過使用推式segue訪問。 該viewController需要嵌入在UINavigationController中。 因此通常情況下,這沒有問題。 push segue負責推送viewController,因此viewController具有UINavigationController。

我的問題是,在某些情況下,我想使用模式搜索來呈現相同的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
    }
}

使用Push Segue時

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

在情節提要中,您可以通過以下方法將ViewController嵌入到導航控制器中:選擇View Controller,然后從頂部的Editor->Embed In->Navigation Controller菜單中進行選擇。 從另一個視圖控制器中,您可以控制拖動到此“導航”控制器以設置modal序列。 您也可以控制拖動到原始View Controller,以在不使用Navigation Controller的情況下為其設置序列。

演示圖板顯示了既嵌入在導航控制器中又嵌入在導航控制器中的視圖控制器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM