簡體   English   中英

如何使用給定的根ViewController和初始ViewController實例化情節提要?

[英]How do I instantiate a storyboard with a given root viewcontroller and initial viewcontroller?

我的應用程序中有一個故事板,帶有導航控制器和幾個視圖。 這會自動將帶有后退按鈕的導航欄放入不是根視圖的任何視圖中。

但是,有時我會從此故事板導航到單個筆尖。 我想導航回情節提要,但不一定要導航至原始根視圖。 我目前使用這種方法來這樣做:

+(void) TransitionOnStoryboard:(NSString*)storyboard to:(NSString*)identifier withViewController:(UIViewController*)viewController
{
    UIStoryboard *sb = [UIStoryboard storyboardWithName:storyboard bundle:nil];
    UIViewController *vc = [sb instantiateViewControllerWithIdentifier:identifier];
    vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [viewController presentViewController:vc animated:YES completion:NULL];
}

這顯示了我想要的視圖,但沒有導航欄。 如何指定導航控制器或根視圖,以使應用程序知道將導航欄和后退按鈕放入其中?

謝謝

答案是將導航控制器保留在從筆尖添加的視圖控制器的下面。

將筆尖顯示為全屏模式。 如果需要,導航欄會消失。 從該新的視圖控制器中,您可以推送更多模態,添加導航控制器或其他任何方法。

請注意,您可以執行所有這些操作,並且也可以放在情節提要中。

完成后,關閉模式以顯示導航控制器,您便可以使用情節提要重新開始工作了。 您可以將新的視圖控制器推到導航控制器上而不使用動畫,當您彈出來自筆尖的模態時,它應該顯示為最前面的VC。

我確信這不是解決此問題的理想方法,但對我來說確實很好。

本質上,我從視圖控制器中刪除了自從情節提要導航到當前視圖之前並彈出當前視圖以來生成的所有視圖。 在這種情況下,這些視圖屬於一個類(CheckboxListViewController),因此可以很簡單地將其刪除,如下所示:

+(void) navigateToMainMenu:(UINavigationController*)navigationController
{
    [QuickView removeFromNavigationController:navigationController allOfViewControllerWithClass:[CheckboxListViewController class]];
    [navigationController popViewControllerAnimated:YES];
}

+(void) removeFromNavigationController:(UINavigationController *)navigationController allOfViewControllerWithClass:(Class)viewControllerClass
{
    NSMutableArray *keptViewControllers = [[NSMutableArray alloc]init];
    for (UIViewController *viewController in navigationController.viewControllers)
        if (![viewController isKindOfClass:viewControllerClass])
            [keptViewControllers addObject:viewController];
    navigationController.viewControllers = keptViewControllers;
}

(注意-QuickView是包含這些方法的類的名稱。)。

您可以通過調用以下命令來刪除您不希望彈出窗口導航到的任何其他類:

[QuickView removeFromNavigationController:navigationController allOfViewControllerWithClass:[YourClassName class]];

在navigationToMenu方法中。

暫無
暫無

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

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