在Mac应用程序中添加自定义视图控制器作为根视图控制器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Mac应用程序中添加自定义视图控制器作为根视图控制器?相关的知识,希望对你有一定的参考价值。

我已经检查了这个问题的大部分答案,但主要是针对Cocoa Touch。我需要在我的appdelegate中为mac应用程序实现这一点。

一旦用户登录,他将被重定向到主屏幕,否则进入登录屏幕。

let controller:NSWindowController = NSWindowController()
let viewController:NSViewController

let storyboard = NSStoryboard.init(name: "Main", bundle: nil)
    let stringLoginStatus = NSUserDefaults.standardUserDefaults().objectForKey(Constants.Key_LoginStatus) as? String
    if stringLoginStatus != nil
    {
        if stringLoginStatus == "true"
        {
            viewController = storyboard.instantiateControllerWithIdentifier("Channel") as! NSViewController
        }
        else{
            viewController = storyboard.instantiateControllerWithIdentifier("ViewController") as! NSViewController
        }
    }
    else{
        viewController = storyboard.instantiateControllerWithIdentifier("ViewController") as! NSViewController
    }

    controller.window?.contentViewController = viewController
    controller.window?.makeKeyAndOrderFront(self)

它显示和错误,因为控制器未初始化。

答案

尝试此代码来更改您的视图控制器: -

UIApplication.appWindow.rootViewController = UIStoryboard.main.instantiateViewController(withIdentifier: "customViewControl")

// MARK:使用UIApplication扩展来获取appWindow

    extension UIApplication {
        class var appWindow: UIWindow! {
            return (UIApplication.shared.delegate?.window!)!
        }
    }

// MARK:制作Storyboard扩展程序以获取主屏幕

extension UIStoryboard {
    class var main: UIStoryboard {
        let storyboardName: String = Bundle.main.object(forInfoDictionaryKey: "UIMainStoryboardFile") as! String
        return UIStoryboard(name: storyboardName, bundle: nil)
    }

}

以上是关于在Mac应用程序中添加自定义视图控制器作为根视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 将自定义 UIView 放在视图控制器中

将整个项目的自定义视图显示为页脚 [关闭]

将自定义视图控制器添加到情节提要

以编程方式添加控制器视图时自定义自动布局约束被破坏

带有自定义后退按钮的滑动手势冻结根视图控制器

如何返回根视图控制器