0

使用 Xcode 我有导航到视图 B 的视图 A。

按下返回 UIBarButtonItem 后,我正在尝试向用户展示 UIActionSheet 以确认导航以返回视图 A。

我需要在代码中做什么来阻止视图向后导航,然后(取决于用户输入)向后移动或停留在当前屏幕上?

4

2 回答 2

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 或不导航到前一个 viewController。

要导航到上一页,请使用 popViewMethod。

`

于 2012-05-13T03:16:32.280 回答
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 协议。

于 2012-05-13T04:54:55.713 回答