检测是否按下了后退按钮并等待用户操作弹出到上一个视图

时间:2013-10-16 07:33:45

标签: iphone ios button uinavigationbar back

我看到有关如何检测用户何时按下UINavigationBar上的“后退”按钮的多个问题,但答案并未解决我的问题。

确实,我想在用户按下UINavigationBar“后退”按钮时显示UIAlertView,问他“你想保存更改吗?”

当用户按下“后退”按钮(带有以下代码段)时,我可以显示UIAlertView,但同时弹出上一个视图。我不想要这种行为!我只想要应用程序等待用户回答弹出上一个视图......

-(void) viewWillDisappear:(BOOL)animated
{
    if ([self isMovingFromParentViewController])
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Avertissement" message:@"Voulez-vous enregistrer les modifications effectuées ?" delegate:self cancelButtonTitle:@"Retour" otherButtonTitles:@"Oui", @"Non", nil];
        [alert show];
    }
    [super viewWillDisappear:animated];
}

谢谢你的帮助......

1 个答案:

答案 0 :(得分:6)

我建议您使用LeftbarButtonItem代替viewWillDisappear的默认后退按钮事件: -

- (void)viewDidLoad
{
  UIBarButtonItem *left=[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(actionBack:)];
    self.navigationItem.leftBarButtonItem = left;
 [super viewDidLoad];
}

- (IBAction)actionBack:(id)sender {
   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Avertissement" message:@"Voulez-vous enregistrer les modifications effectuées ?" delegate:self cancelButtonTitle:@"Retour" otherButtonTitles:@"Oui", @"Non", nil];
    [alert show];
}

并使用提醒委托clickedButtonAtIndex

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex  
    {
        if(alertView.tag == 1)
        {
            // set your logic
        }
    }