我看到有关如何检测用户何时按下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];
}
谢谢你的帮助......
答案 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
}
}