使用变量在视图控制器之间切换

时间:2014-04-16 22:50:22

标签: ios objective-c viewcontroller

我已经设置了多个视图控制器,其中是一个场景游戏。现在我可以通过按钮在场景之间切换,然后通过将它们相互拖动来链接它们。但是如何使用变量切换视图控制器。例如,我有一个名为lives的整数,当它达到零时,我希望它切换到视图控制器上的游戏。

2 个答案:

答案 0 :(得分:1)

与监控变量相比,可能有更好的方式更适合您的需求。例如,当您的变量更改为0时,某些代码必须将其更改为0而不是吗?并且将其更改为0的代码可以发布其更改为0的通知,仅提供一个示例。

但是,如果您在变量上设置Key Value Observing,然后当它更改为所需的值时触发新的视图控制器,那么您可以

如果这是您想要选择的路线,请查看有关KVO的教程。

答案 1 :(得分:0)

您不能简单地让变量触发事件。其他东西必须触发游戏而不是事件,你可以检查那一点的生命数量。例如,当玩家失去生命时,检查他/她有多少生命。如果生命值达到0,则通过创建必须满足的条件转到视图控制器上,然后弹出或推送到视图控制器:

int lives = 10;

// Game is played and player dies

if (lives == 0) {
    GameOverViewController *gameOverInStack = (GameOverViewController *)[self viewControllerInStackWithClass:[GameOverViewController class]];
    if (gameOverInStack) {
        [self.navigationController popToViewController:gameOverInStack animated:YES];
    } else {
        GameOverViewController *gameOverInstantiated = [self.storyboard instantiateViewControllerWithIdentifier:@"StoryboardTitleForViewController"];
        [self.navigationController pushViewController:gameOverInstantiated animated:YES];
    }
} else {
    // Continue playing game or other desired event
}

- (UIViewController *) viewControllerInStackWithClass:(Class)class {
    for (UIViewController *viewController in self.navigationController.viewControllers) {
        if ([viewController isKindOfClass:class]) {
            return viewController;
        }
    }
    return nil;
}
相关问题