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

Cocoa 如何以编程方式从AppDelegate设置初始ViewController?,cocoa,xamarin,xamarin.mac,Cocoa,Xamarin,Xamarin.mac,作为我的问题,我陷入了这一点。实际上,我的问题是,在我的示例中,我必须在应用程序启动时显示登录屏幕,如果用户成功使用其凭据登录,他/她将重定向到主屏幕。如果用户第二次打开应用程序,我必须显示主屏幕,因为他已经登录 如何解决此问题?在AppDelegate中: public override bool FinishedLaunching(UIApplication app, NSDictionary options) { window = new UIWindow(UIScree

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

如何解决此问题?

在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;
}

首先,您需要打开情节提要,选择窗口控制器,并在属性检查器中取消选中“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的标识符。

在应用程序首选项中存储标志“LoggedIn”,并基于它导航感谢您的响应我没有在我的AppDelegate中的xamarin.ios中执行示例没有显示RootViewController选项:(这是我的代码public override void didfinishlauncing(NSNotificationnotification){if(isAlreadyLoggedIn){this//不显示选项“window”和“RootViewController”}否则{}}非常感谢,我会尝试一下