如何加载不同的视图控制器,取决于之前的高分

时间:2016-02-11 08:34:17

标签: ios objective-c iphone

我正在制作游戏,现在我有9个等级。升级你必须得10分。这将节省标签。

因此,当viewwillappear加载,并且标签的得分为10时,它们将转到下一个viewcontroller。

但问题是,当你再次加载应用程序时,它看起来并不像我想要的那样。因为先前的视图首先加载,然后它识别出标签上有得分(10),然后几秒后切换回下一级别。

我有什么方法可以让它快速加载它们应该处于的水平? (就像测验一样)当他们加载应用程序时,他们会在退出应用程序时直接进入他们所处的级别,等待加载视图的instad并等待一毫秒切换到他们应该打开的视图。

2 个答案:

答案 0 :(得分:1)

当它在后台并且用户回来时如果你想做某事你可以将所需的视图控制器设置为导航控制器的根视图控制器,或者你可以根据你的要求或根据你的逻辑将它添加到窗口中这种方法。

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

     NSInteger score = [[NSUserDefaults standardUserDefaults] integerForKey:@"aKey"];

     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        ViewController1 *viewController1 = (ViewController1 *)[storyboard instantiateViewControllerWithIdentifier:@"ViewController1Identifier"];
        ViewController2 *viewController2 = (ViewController2 *)[storyboard instantiateViewControllerWithIdentifier:@"ViewController2Identifier"];

     if(score > 10){
          if ([self.window.rootViewController isKindOfClass:[ViewController1 class]]) {
             //but you want to present here secondViewController you can do this 
             [self.window setRootViewController:viewController2];
           }
     }
}

答案 1 :(得分:-1)

如果我理解您的需求,您可以使用不同的方法:将值存储在NSUserDefault中(因此它是持久的,您可以从应用程序的任何位置执行它)然后在UIAppDelegate中(在任何视图控制器之前加载)检查并加载正确的。 希望这有帮助