2010-06-02 58 views
0

情況是這樣的:如何在用戶關閉警報視圖後立即強制查看自己?

如果我沒有互聯網連接,我向用戶顯示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方法不應該直接嘗試重新連接到互聯網,而只是讓它產生這樣做的異步調用。

編輯: 您可能會延遲/分離DoSomething的執行與這行代碼:

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

所以如果我把「dosomthing」放在「[alert release]」之後。 那麼,我可以如何強制刷新視圖? 含義: [alert show]; [警報發佈]; /////// //此處強制視圖刷新自己 /////// //後視圖刷新通話dosomthing [自doSomthing] – yoni 2010-06-02 12:55:57

+0

你不應該需要強制刷新,因爲控制如果你分離冗長的過程,將很快返回到系統。稍後在相同的方法中調用doSomething不會影響它。 – 2010-06-02 13:41:23

0

我用這種方法檢測時,警報被駁回,我添加了一行代碼來隱藏它,產生一個新的URLrequest,如果這就是你需要的。

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

該請求使用我的UIWebView'webnews'和NSURL'home',您將不得不適應這些當然。