【发布时间】:2015-12-12 19:10:21
【问题描述】:
我将我的项目分为两个故事板:
Main.storyboard- 用于经过身份验证的用户。这也是默认的故事板。Login.storyboard- 适用于未经身份验证的用户。
应用委托文件:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if(user is authenticated)
{
[self presentLoginScreen:YES];
return YES;
}
应用委托文件中的登录屏幕:
-(void)presentLoginScreen:(BOOL)animated{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Login" bundle:[NSBundle mainBundle]];
UIViewController *vc =[storyboard instantiateInitialViewController];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = vc;
}
注销时,会显示登录屏幕。我在应用程序委托文件中定义了这个:
-(void)logOut{
//clear data
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Login" bundle:[NSBundle mainBundle]];
UIViewController *vc =[storyboard instantiateInitialViewController];
self.window.rootViewController = vc;
//Show login Screen
[self presentLoginScreen:NO];
}
从MainStoryBoard的viewcontroller(letsay mainstoryboardVc.m),logOut被调用为:
-(void)didTouchLogOut{
NSLog(@"GoodBye");
AppDelegate *appDelegateTemp = [[UIApplication sharedApplication]delegate];
[appDelegateTemp logOut];
}
这导致了很多问题:
首先,当我登出并进入登录界面时,我仍然可以在后台看到
mainstoryboardVc.m,看起来很笨拙。我注销,重新登录并再次尝试注销,我看到以下消息:
不鼓励在分离的视图控制器上显示视图控制器
并且不显示登录屏幕。
我在网络上尝试了很多关于两个故事板之间视图控制器演示的答案,但没有保留历史,似乎没有任何效果......
【问题讨论】:
-
所以你确实让事情变得更复杂而没有任何收获? 为什么你使用两个不同的故事板?
-
使用 2 个故事板有什么意义?
-
因为场景数量很大,两个组件相当独立,每个故事板都是由不同的开发人员开发的。合并两个将是最后一个选项,但如果我不必采取最后一个选项,那就太好了..
标签: ios objective-c storyboard