2010-06-02 2 views
0

ситуация такая:Как сразу заставить просмотр рисовать после закрытия Alert View пользователем?

если у меня нет подключения к интернету, я показываю пользователю UIAlertView. , когда пользователь нажимает «повторить попытку», я называю «делать что-то».

проблема является UIAlertView еще показать для seconds.after пользователя нажмите кнопку «попробуйте еще раз»

я пытался как:

[self.view setNeedsDisplay]; 

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

благодарим заранее.

/////////////////////////////////// 
if(somecondition) 
{ 

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"NO INTERNET CONNECTION" 
                 delegate:self cancelButtonTitle:nil otherButtonTitles:@"Try Again", nil]; 

     [alert show]; 
     [alert release]; 

       return; 
} 

- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 
    // the user clicked one of the OK/Cancel buttons 

    [self DoSomthing];     

} 

ответ

0

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

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

EDIT: Вы можете задержать/отсоединять выполнение DoSomething с этой строки кода:

[self performSelector:@selector(doSomething) withObject:nil afterDelay:0]; 
+0

поэтому, если я поставлю «dosomthing» после «[alert release]». то, как я могу заставить представление заставить обновить? значение: [alert show]; [предупреждение]; /////// // здесь заставить вид обновить сам /////// // после обновления вида вызова DoSomthing [само DoSomthing] – yoni

+0

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

0

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

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
alert.hidden=YES; 
[webnews loadRequest:[NSURLRequest requestWithURL:home]]; 
} 

Запрос использует мой UIWebView «вебновости» и «домой» в NSURL, вам придется адаптировать их, конечно.