2010-07-08 78 views
0

我正在運行需要啓用LocationServices的應用程序。我正在檢查他們是否通過撥打服務電話並發現錯誤。在錯誤情況下,我想彈出一個alertview,通知用戶激活位置服務。當這個測試發生時,我已經打開了另一個AlertView。我想關閉那個,並給用戶我之前提到的對話框。關閉UIAlertView並用另一個替換

目前,我有

case kCLErrorDenied: // CL access has been denied (eg, user declined location use) 

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"NOTICE" 
       message:@"Sorry, this application needs your location. Please select 'Allow' when asked to use your current location. You don't need to be on or near the trail." 
       delegate:self 
       cancelButtonTitle:nil 
       otherButtonTitles:@"EXIT"]; 
    [alert show]; 
    [alert release]; 
    //exit(0); 
    break; 

這會導致應用程序只是退出。我有一個NSLog輸出在那裏,所以我知道它到了這種情況。

回答

1

這裏您指定了委託:self,然後它搜索在UIAlertViewDelegate聲明的警報處理程序,以及何時它沒有發現它崩潰。

所以,你應該定義

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
在你的類

你也可以實現UIAlertViewDelegate的其他方法,它可以幫助你完成所需的任務。

+0

謝謝。我也注意到了。我在裏面放了一些處理代碼,現在它工作的很好。 – Adam 2010-07-09 21:07:31

0

您需要跟蹤實例變量的前一個警報,並在顯示新的對話框之前調用該方法以關閉該對話框。您還需要該警報的委託處理程序。