0

我正在使用带有 2 个视图控制器的情节提要,这些控制器通过 segue 相互连接。在第一个视图控制器上有一个按钮,如果单击该按钮,它将转到第二个视图控制器。问题是我想弹出一个警报视图,我试图在 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法中显示警报视图,但问题是它转到第二个视图控制器然后弹出警报视图。我希望它在第一个视图控制器上弹出,如果你从警报视图中按下取消按钮,它仍然停留在第一个视图控制器上。知道我该怎么做吗?

4

2 回答 2

2

您需要通过点击按钮来显示警报并充当警报的代表。只有当您获得警报完成委托回调 (alertView:willDismissWithButtonIndex:) 时,您才能决定是应该触发 segue 还是什么都不做。

于 2013-06-13T13:17:07.997 回答
1

为此,您需要执行以下操作:

  • 从故事板上的按钮中删除 segues。
  • IBAction为该按钮实现一个并在那里显示警报
  • 使用clickedButtonAtIndex委托方法UIAlertView检查按下的按钮。如果用户按确定转到下一个视图

添加IBAction类似:

- (IBAction)showAlert:(id)sender
{
   UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Can I Move ?"
                                                  message:nil
                                                 delegate:self
                                        cancelButtonTitle:@"OK"
                                        otherButtonTitles:@"Cancel",nil];
   [message show];
}

并实现委托方法,如:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
    if([title isEqualToString:@"OK"])
    {
        [self.navigationController pushViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"Other View"] animated:YES];
    }
}

注意:您也可以使用performSegueWithIdentifier移动到下一个视图

于 2013-06-13T13:20:03.053 回答