0

我正在运行一个需要启用 LocationServices 的应用程序。我正在通过调用服务并捕获错误来检查它们是否存在。在错误情况下,我想弹出一个警报视图,通知用户激活位置服务。进行此测试时,我已经打开了另一个 AlertView。我想关闭那个并给用户我之前提到的对话框。

目前,我有

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 输出,所以我知道它涉及到这种情况。

4

2 回答 2

1

在这里您指定委托:自我,然后它搜索在 UIAlertViewDelegate 声明的警报处理程序,当它没有找到它时崩溃。

所以你应该定义

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

在你的课上。

您还可以实现 UIAlertViewDelegate 的其他方法,这将帮助您完成所需的任务。

于 2010-07-09T07:57:54.270 回答
0

您需要使用实例变量跟踪先前的警报,并调用该方法以在显示新对话框之前关闭先前的对话框。您还需要警报的委托处理程序。

于 2010-07-09T02:12:50.617 回答