如何使用没有选项卡或导航控制器的故事板从 AppDelegate 实例化不同的视图?
Posted
技术标签:
【中文标题】如何使用没有选项卡或导航控制器的故事板从 AppDelegate 实例化不同的视图?【英文标题】:How to instantiate different View from AppDelegate using Storyboard without Tab or Nav Controller? 【发布时间】:2012-12-12 15:51:29 【问题描述】:我正在尝试构建一个具有 webview 的应用程序(第一个)。我使用了 Storyboard,并实现了一个完美运行的 WebView。但现在它需要使用 Facebook 进行登录,所以我向 Storyboard 添加了一个新视图,我想根据登录状态加载根视图。当我将视图标记为初始视图控制器时,应用程序可以工作并显示该视图,但是,我如何才能在显示视图之前更改它?。
我已经尝试过这段代码,但它不起作用:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc =[storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
// Set root view controller and make windows visible
self.window.rootViewController = vc;
[self.window makeKeyAndVisible];
我有这个错误:“2012-12-12 16:40:51.219 MoonBooster[15056:c07] 无法实例化 UIMainStoryboardFile 'MainStoryboard' 的默认视图控制器 - 可能未设置指定的入口点?”
我不确定 View 的标识符来自哪里,我正在考虑重新设计应用程序,只是为了不使用 Storyboard 也不是 segues,因为我没有使用 Nav 或 Tab View Controllers(我们没有t需要它)所以我只能使用模态segues。
感谢您的帮助
【问题讨论】:
【参考方案1】:视图控制器的标识符在身份检查器中设置 - 它位于 Identity 标题下,称为 StoryboardID。
就您的应用程序结构而言,我看到很多海报试图做与您正在做的事情类似的事情,但我认为这不是正确的方法。在应用程序开始时您想要的任何主视图(不包括启动屏幕或登录屏幕)都应该是根视图控制器。如果你想要一个登录屏幕,那么从你的主视图控制器的 viewDidAppear 方法中以模态方式呈现它。如果您不想在登录屏幕出现时简要查看主视图,则将动画设置为 NO。如果登录成功,那么只需关闭登录控制器,您就可以开始了。如果失败,则通过另一个屏幕或警报通知用户,并且不要关闭登录控制器。
【讨论】:
非常感谢。很有用 这似乎不是显示登录屏幕的正确方法。当您在 ViewDidAppear 中显示登录屏幕时,当前视图已经形成并显示(尽管只有几分之一秒),这似乎不对。 @ShirishKumar,在我写这篇文章的时候,我并没有看到当前观点的短暂一瞥。从那以后事情可能已经发生了变化,这使得这不再是最好的方式了。以上是关于如何使用没有选项卡或导航控制器的故事板从 AppDelegate 实例化不同的视图?的主要内容,如果未能解决你的问题,请参考以下文章