2010-10-02 2 views
0

У меня есть рабочее приложениеIphone: остановить выполнение кода при настороженности показана в реализации viewWillAppear

перед загрузкой первого взгляда, я поставил предупреждение в методе viewWillAppear:

- (void)viewWillAppear 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"MyAppp" message:@"Application will connect to Internet. Continue?" 
               delegate:self cancelButtonTitle:nil otherButtonTitles:@"No, quit", @"Yes", nil]; 
    [alert show];  
    [alert release]; 
} 

I может получить щелчки на двух кнопках (Да/Нет) правильно ...

Но ... Я хотел бы, чтобы выполнение кода останавливалось и ожидало ответа, но вместо этого код продолжается, подключается к Интернету и извлекает данные ...

Как предотвратить загрузку представления на основе пользовательского ввода?

ответ

2

ViewWillAppear - это уведомление, которое позволяет вам заполнить некоторые материалы перед показом представления, вы не можете избежать появления представления здесь. Вы должны просмотреть свою реализацию.

+0

так, я узнал, что в принципе нет никакого способа, чтобы показать UIAlertView модально (с прерыванием кода) – Antonio

+0

Вы можете, но не в том, что мероприятие. UIAlertView не останавливает выполнение кода. Вы должны выйти из функции, в которой вы показываете предупреждение, и продолжить свою процедуру в UIAlertViewDelegate. – Jorge

1

Просто разбейте свой метод viewWillAppear на два метода. Не пытайтесь делать все это в одном фрагменте последовательного кода.

Первый способ запускает оповещение, а затем просто выходит/выходит/возвращается.

Второй способ может быть вызван обработчиком ответа кнопки оповещения, а затем закончить загрузку представления только после того, как он был вызван обработчиком предупреждения после ответа пользователя.

Возможно, вам может потребоваться или не нужно сохранять дополнительную информацию о состоянии (в дополнительных свойствах или переменных экземпляра вместо локаторов методов) между первым и вторым методами.

0

Я решил это, показывая ответ в «ViewDidLoad», получил делегат, чтобы получить кнопку, которая была нажата, а затем обрабатывать данные, только если пользователь нажал «Да»

1

ниже может быть использован, я знать его маленький старый вопрос, но может быть полезным для других ..

[alert show]; 

while ((!alert.hidden) && (alert.superview != nil)) 
    { 
     [[NSRunLoop currentRunLoop] limitDateForMode:NSDefaultRunLoopMode]; 

    } 
Смежные вопросы