使用 Xcode 我有导航到视图 B 的视图 A。
按下返回 UIBarButtonItem 后,我正在尝试向用户展示 UIActionSheet 以确认导航以返回视图 A。
我需要在代码中做什么来阻止视图向后导航,然后(取决于用户输入)向后移动或停留在当前屏幕上?
使用 Xcode 我有导航到视图 B 的视图 A。
按下返回 UIBarButtonItem 后,我正在尝试向用户展示 UIActionSheet 以确认导航以返回视图 A。
我需要在代码中做什么来阻止视图向后导航,然后(取决于用户输入)向后移动或停留在当前屏幕上?
以编程方式添加后退按钮。
例如。
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 或不导航到前一个 viewController。
要导航到上一页,请使用 popViewMethod。
`
您不应该为所有其他操作呈现 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 协议。