如何使用没有Tab或Nav Controller的Storyboard从AppDelegate实例化不同的View?

时间:2012-12-12 15:51:30

标签: ios controller views storyboard

我正在尝试构建一个具有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既不会因为我没有使用Nav或Tab View Controllers(我们不知道)我需要它所以我只能使用模态segues。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

视图控制器的标识符在身份检查器中设置 - 它位于Identity标题下,它被称为StoryboardID。

就你的应用程序结构而言,我看到很多海报试图做一些类似于你正在做的事情,我不认为这是正确的方法。无论您在应用程序启动时想要的主视图(不包括启动画面或登录屏幕)都应该是根视图控制器。如果需要登录屏幕,则从主视图控制器的viewDidAppear方法以模态方式显示该屏幕。如果您不希望在登录屏幕出现时短暂地看到主视图,则将动画设置为NO。如果登录成功,那么只需关闭登录控制器,您就可以开始了。如果失败,则通过另一个屏幕或警报通知用户,并且不要关闭登录控制器。