如何以编程方式从 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 的标识符。
作为我的问题,我陷入了这一点。实际上我的问题是,在我的示例中,如果用户使用 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 的标识符。