IOS: удалить подпредставление с помощью cancelButtonTitel из UIAlert

Могу ли я удалить подвид с помощью cancelButtonTitle из UIAlert? Потому что я пишу это:

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Done!" 
                                                    message:[@"It's all ok!"]
                                                   delegate:nil 
                                          cancelButtonTitle:@"OK" 
                                          otherButtonTitles:nil];

[self dismissModalViewControllerAnimated:YES];

но этот код удаляет мое подпредставление, прежде чем я нажму CancelButtonTitle, как я могу это сделать?


person cyclingIsBetter    schedule 18.04.2011    source источник


Ответы (2)


Да, реализуйте метод UIAlertViewDelegate alertView:didDismissWithButtonIndex: и закройте там свое представление.

Сначала установите делегата на себя:

...
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Done!" 
                                                    message:[@"It's all ok!"]
                                                   delegate:self
                                          cancelButtonTitle:@"OK" 
                                          otherButtonTitles:nil];
...

Может выглядеть так:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{
    if (buttonIndex == [alertView cancelButtonIndex]) {
        [self dismissModalViewControllerAnimated:YES];
    }
}
person Nick Weaver    schedule 18.04.2011
comment
Совет: используйте if (buttonIndex == [alertView cancelButtonIndex]), если вы не уверены в CancelButtonIndex :-) - person Matthias Bauch; 18.04.2011
comment
Но я должен вызвать этот метод... нет? [self alertView:alertView clickedButtonAtIndex:?????]; что я должен написать в clickedButtonAtIndex??? - person cyclingIsBetter; 18.04.2011
comment
@fluchtpunkt спасибо, я всегда использовал для этого свои собственные константы - person Nick Weaver; 18.04.2011

Установите делегата UIAlertView на себя и выполните:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

В этом методе отклоните представление.

person MarkPowell    schedule 18.04.2011