发布时呈现不同的故事板

时间:2014-02-01 15:08:45

标签: objective-c xcode ios7

我想根据某些条件向用户呈现不同的故事板场景(如果用户先前已登录,则显示欢迎场景;如果他们是新用户,则显示注册屏幕)。

用户之前是否已登录将存储在sqlite中 - 但我应该在哪里检查,以及如何基于此加载默认的初始场景?

我看过在AppDelegate中执行performSegue,但我不认为segue是正确的方法。

任何想法如何去做这个? 谢谢大家!

2 个答案:

答案 0 :(得分:2)

您需要使用app delegate的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法。

首先,您需要在此处包含逻辑以确定要加载的故事板。一旦您确定要加载哪个故事板,故事板就可以这样加载:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YOUR_STORYBOARD" 
    bundle:nil];

UIViewController *initialViewController = [storyBoard 
    instantiateInitialViewController];

[self.window setRootViewController:initialViewController];

答案 1 :(得分:-1)

嘿,这是你可以做的,从设置中删除主界面文件,然后使用以下代码。

  1. 第1步: 选择项目,然后选择常规设置。
  2. enter image description here 2.第2步

    根据您的条件使用以下代码。

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        // Override point for customization after application launch.
    
        self.window=[[UIWindow alloc] init];
        [self.window setFrame:[UIScreen mainScreen].bounds];
    
         if(signedIn){
         //Create Account Storyboard
        UIStoryboard *board=[UIStoryboard storyboardWithName:@"A" bundle:nil];
         [self.window setRootViewController:[board instantiateInitialViewController]];
         }else{
          //Signup StoryBoard
        UIStoryboard *board=[UIStoryboard storyboardWithName:@"B" bundle:nil];
         [self.window setRootViewController:[board instantiateInitialViewController]];
        }
    
        [self.window makeKeyAndVisible];
    
        return YES;
    }