Один из моих методов отправляет сообщение объекту (что вам известно об этом), и ожидает ответа BOOL. Однако ответ BOOL, который он ожидает, основан на ответе на UIAlertView, созданный в методе принимающего объекта. Тем не менее, код не останавливается, ожидая ответа пользователя на UIAlertView. Моя проблема: как использовать -alertView: clickedButtonAtIndex в возвращаемом значении метода?Приостановить выполнение кода до нажатия кнопки UIAlertView?
Вот код работает сообщение (в этой конструкции, я ожидал navigateAwayFromTab меняться в зависимости от пользовательского ввода в UIAlertView, но он никогда не получает шанс):
- (BOOL)readyToNavigateAwayFromTab {
NSLog(@"message received by Medical View");
navigateAwayFromTab = NO;
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Navigate Away From Tab?"
message:@"Navigating away from this tab will save your work."
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil
];
[alert show];
[alert release];
return navigateAwayFromTab;
}
#define CANCEL 0
#define OK 1
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if(buttonIndex == OK) navigateAwayFromTab = YES;
}
Я читала по модальным дискуссиям UIAlertView, и я согласен с реализацией Apple - так как это правило. Однако в этом случае я не вижу способа решить проблему, поставив код в -alertView: clickedButtonAtIndex, потому что мне не нужно запускать код на основе UIAlertView, мне просто нужно прочитать ответ. Любые предложения о том, как я могу добраться до моего тюрьмы? Я уже пробовал цикл while после [alert show], но тогда предупреждение даже не отображается, и по ряду причин я не могу использовать -viewWillDisapear.
Редактировать
Для тех просмотра этого вопроса в современных эпохах Ios, этот вопрос относился к Ios 2
Блестящее решение. Ура для флагов! Благодарю. – JoBu1324
Ничего себе. Я никогда не думал, что ты вернешься, мой ответ был настолько запоздалым. Рад, что это помогло. :) –