0

我会UIViewController从一个UIAlertView按钮打开一个,但它不起作用。

当用户终止游戏时,我会显示UIAlertView一些文本和两个按钮:“确定”关闭警报,“得分”打开得分页面。

这是实际的UIAlertView

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"YOU WIN!"
                                                            message:[NSString stringWithFormat:@"You win a game in %d seconds!",seconds]
                                                           delegate:self
                                                  cancelButtonTitle:@"Ok"
                                                  otherButtonTitles:@"Score", nil];
        [alert show];

这是推送视图的代码:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
    if([title isEqualToString:@"Score"]){
        ScoreViewController *score = [[ScoreViewController alloc]init];
        [[self navigationController] pushViewController:score animated:YES];
    }
}

我得到的是一个完全黑屏。有人能帮我吗?我无法弄清楚我做错了什么。

PS:ScoreViewController从根视图有一个segue,但我当然不能从情节提要创建一个新的,因为我想从警报视图按钮以编程方式执行segue。

希望我已经清楚了,任何帮助将不胜感激!

4

1 回答 1

0

看起来您正在实例化一个实例ScoreViewController并将其推送到您的导航控制器上。虽然这是呈现另一个控制器的合法方式,但它与执行 Storyboard segue 不同。

首先,很明显,您必须确保在 Storyboard 中有一个连接视图控制器的 segue。听起来你已经做到了那么远,所以接下来你要确保 segue 有一个标识符。选择 segue 并在属性检查器中设置其标识符。然后在代码中执行segue:

[self performSegueWithIdentifier:@"YourIdentifier" sender:self];
于 2014-07-11T15:14:50.670 回答