如何以编程方式从 AppDelegate 设置初始 ViewController?

How to set initial ViewController from AppDelegate programmatically?

作为我的问题,我陷入了这一点。实际上我的问题是,在我的示例中,如果用户使用 his/her 凭据成功登录,我必须在应用程序启动时显示登录屏幕 he/her 将重定向到主屏幕。如果用户第二次打开应用程序,我必须显示主屏幕,因为他已经登录。

我该如何解决?

在 AppDelegate 中:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{

        window = new UIWindow(UIScreen.MainScreen.Bounds);

        // If you have defined a root view controller, set it here:
    if(LoggedIn)
                window.RootViewController = new MainController();
    else
                window.RootViewController = new LoginController();

        // make the window visible
        window.MakeKeyAndVisible();


    return true;
}

首先,您需要通过打开故事板、选择 window 控制器并在属性检查器中取消选中 "Is Initial Controller"

来防止 cocoa 加载初始控制器

然后是这样的:

    NSWindowController controller;
    public override void DidFinishLaunching (NSNotification notification)
    {
        var storyboard = NSStoryboard.FromName ("Main", null);
        if (true)
            controller = (NSWindowController)storyboard.InstantiateControllerWithIdentifier ("FirstController");
        else
            controller = (NSWindowController)storyboard.InstantiateControllerWithIdentifier ("SecondController");
        controller.Window.MakeKeyAndOrderFront (this);          
    }

FirstController 和 SecondController 是主故事板中两个 NSWindowController 的标识符。