从UIAlertView按钮以编程方式推送视图?

时间:2014-07-11 15:02:22

标签: ios objective-c uiviewcontroller uialertview uialertviewdelegate

我会从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但当然我无法从storyboard创建一个新的因为我想从警报视图按钮以编程方式执行segue。

希望我一直很清楚,任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:0)

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

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

[self performSegueWithIdentifier:@"YourIdentifier" sender:self];