当以编程方式设置根视图控制器时,导航和标签栏丢失

Posted

技术标签:

【中文标题】当以编程方式设置根视图控制器时,导航和标签栏丢失【英文标题】:When set root view controller programmatically navigation and tab bar missing 【发布时间】:2015-02-03 08:40:10 【问题描述】:

应用委托代码:

let storyboard = UIStoryboard(name: "Main", bundle: nil)

        let myViewController = storyboard.instantiateViewControllerWithIdentifier("MyViewController") as UIViewController
if self.window != nil 
                self.window!.rootViewController = myViewController

            

当我在没有此代码的情况下加载应用程序时,一切都很好。 但是,如果我运行此代码视图已加载但缺少导航和标签栏。 我在这里错过了什么? 我正在使用情节提要。

【问题讨论】:

【参考方案1】:

这是有效的代码:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let mainRootController = storyboard.instantiateViewControllerWithIdentifier("MainViewController") as UIViewController
if self.window != nil 

                let navigationController:UINavigationController = storyboard.instantiateInitialViewController() as UINavigationController
                navigationController.viewControllers = [mainRootController]

                self.window!.rootViewController = navigationController

return true

【讨论】:

【参考方案2】:

在添加根视图控制器之前,您必须为导航控制器分配内存,然后导航控制器作为根视图控制器。

 UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:yourViewController];

             [[UINavigationBar appearance]setTintColor:[UIColor whiteColor]];

           self.window.rootViewController = navigationController;

【讨论】:

快速编程语言

以上是关于当以编程方式设置根视图控制器时,导航和标签栏丢失的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式创建 UINavigationController

带有 MVVM Light 的标签栏控制器导航 Xamarin

弹出到根视图控制器时导航栏消失

呈现一个导航栏和一个非根视图标签栏控制器

以编程方式导航到另一个故事板上的导航控制器和标签栏控制器内的视图控制器

导航控制器内的标签栏控制器,或共享导航根视图