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