使用Xcode我有View A导航到View B.
按下Back UIBarButtonItem后,我正在尝试向用户显示UIActionSheet以确认导航以返回到View A.。
在代码中我需要做什么来阻止视图导航回来然后(取决于用户输入)向后移动或留在当前屏幕上?
答案 0 :(得分:8)
以编程方式添加后退按钮。
例如。
UIButton *backBtn= [[UIButton alloc] initWithFrame:CGRectMake(0,0,54,30)];
[backBtn addTarget:self action:@selector(backButtonPressed:)forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
[backBtn release];
[[self navigationItem] setLeftBarButtonItem:backBarButton];
[backBarButton release];
//backButtonPressed is the selector for backBtn
然后从该选择器向您显示ActionSheet,并根据用户导航到上一个viewController或不。
要导航到上一页,请使用popViewMethod。
`
答案 1 :(得分:1)
您不应该为其他所有操作提供UIActionSheet。最好使用UIAlertView来实现此目的。根据Apple UIActionsheet指南: -
提供完成任务的其他方式。操作表允许您提供在当前任务的上下文中有意义的一系列选项,而无需在用户界面中将这些选择作为永久位置。
在完成潜在危险任务之前获得确认。操作表会提示用户考虑他们即将采取的步骤的潜在危险影响,并为他们提供一些替代方案。这种类型的通信在基于iOS的设备上尤为重要,因为有时候用户无需使用控件。
对于UIAlertView: -
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Alert View"
message:@"Do You want to go back to previous screen?"
delegate:self
cancelButtonTitle:@"NO"
otherButtonTitles:@"YES",nil];
[alertView show];
[alertView release];
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0) {
NSLog(@"THE 'NO' BUTTON WAS PRESSED");
}
if (buttonIndex == 1) {
NSLog(@"THE 'YES' BUTTON WAS PRESSED");
}
}
在UINavigationController的后退按钮的操作上实现此功能。根据按下“YES”或“NO”的按钮,您可以允许导航。也符合UIAlerrtVIewDelegate协议。