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