UIAlertПросмотреть в представленииWillDisappear - PullRequest
2 голосов
/ 05 декабря 2011

когда пользователь нажимает кнопку Back на моем UINavigationController View, я хочу показать UIAlertView с 2 вариантами.Одна опция (ОК) позволяет пользователю вернуться (к предыдущему экрану), другая (Отмена) останется на текущем контроллере.

Я реализовал следующий код (который я нашел здесь, так)в моем viewWillDisappear:

-(void) viewWillDisappear:(BOOL)animated{
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
        // back button was pressed.  We know this is true because self is no longer
        // in the navigation stack.


        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"All Data will be lost" 
                                                        message:@"You must be connected to the internet to use this app." 
                                                       delegate:self 
                                              cancelButtonTitle:@"Cancel"
                                              otherButtonTitles:@"OK", nil];
        alert.tag = 1;
        [alert show];
        [alert release];
    }
    [super viewWillDisappear:animated];

}

Проблема в том, что после того, как я нажал Назад, представление сразу переходит к предыдущему экрану и отображает на этом экране UIAlertView.

В методе обратного вызова UIAlertViewЯ использовал следующую кодировку, но ничего не происходит (я думаю, что это так, потому что я был в этой точке уже в предыдущем представлении):

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if(buttonIndex == 1)
                 NSLog(@"back");
//Go Back ...
}

BR, mybecks

Ответы [ 2 ]

6 голосов
/ 05 декабря 2011

К тому времени, когда звонят viewWillDisappear, уже слишком поздно.Контроллер навигации уже отклонил контроллер вида.

Вместо этого вам необходимо перехватить событие касания кнопки возврата.Вы можете сделать это несколькими способами - у вас может быть пользовательская кнопка «Назад», которая отображает ваш UIAlertView.Или вы можете использовать UINavigationBarDelegate, который имеет метод navigationBar:shouldPopItem:.

0 голосов
/ 05 декабря 2011

Напишите код для UIAlertView в методе кнопки «назад», и когда вы нажимаете кнопку «Назад», он просто показывает предупреждение, когда вы нажимаете кнопку, он просто вызывает метод clickedbuttonindex:, и в этом методе вы просто вызываете представление, которое ты хочешь.

-(IBAction)back-button{
   //alert
}



- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
   //call the view
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...