2010-10-02 69 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]; 
} 

我能得到正確的兩個按鈕的點擊次數(是/否)......

但是......我想代碼停止執行,等待一個答案,而是代碼的推移,連接到互聯網和檢索數據...

如何防止一個視圖,也基於用戶輸入?

回答

2

的viewWillAppear中是一個通知,它允許你完成一些東西顯示在視圖之前,你無法避免的觀點的出現在這裏。你必須檢查你的實現。

+0

所以,我發現根本沒有辦法來顯示UIAlertView中模態(用代碼中斷) – Antonio 2010-10-02 22:09:20

+0

可以,但不是在事件。 UIAlertView不會停止代碼執行。您應該退出顯示警報的功能,並繼續使用UIAlertViewDelegate中的例程。 – Jorge 2010-10-02 23:12:56

1

就打破你的一個viewWillAppear中方法爲兩種方法。不要試圖在一個連續的代碼塊中完成這一切。

第一種方法將啓動警報,然後就退出/退出/返回。

第二種方法可以由警報按鈕響應處理程序調用,然後在用戶響應後,僅在警報處理程序調用該視圖後才能完成視圖的加載。

您可能需要也可能不需要在第一個和第二個方法之間保存額外的狀態信息(在額外的屬性或實例變量中,而不是方法局部變量)。

0

我解決它通過顯示「viewDidLoad中」的回答,得到了代表拿到哪個按鈕被按下,然後處理數據只有當用戶按下「是」

1

以下可以使用,我知道它有點老問題,但可能是別人 有用..

[alert show]; 

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

    }