单击alertView的buttom后,不会调用alertView didDismissWithButtomIndex

时间:2011-01-20 19:19:34

标签: iphone objective-c ipad ios

我最近开始研究iOS开发,请原谅我,如果我问的话太明显了。

当我的应用程序的视图加载时,它检查某些键的配置,如果这些键没有值,应用程序应显示警告并退出。

首先,我实现了UIAlertViewDelegate:

@interface FirstViewController : UIViewController <UIAlertViewDelegate> {
...

然后检查设置:

    - (void)viewDidLoad {
          NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

              NSString *url = [defaults stringForKey:@"url"];
          NSString *apiKey = [defaults stringForKey:@"api-key"];

          if([url length] < 1 || [apiKey length] < 1){
           UIAlertView *dialog = [[[UIAlertView alloc] 
                       initWithTitle:@"Not properly configured" 
                       message:@"This application was not properly configured. Please configure the application on your iPhone settings." 
               delegate:self 
               cancelButtonTitle:@"Close"
               otherButtonTitles:nil]
               autorelease];
        [dialog setTag:1];
        [dialog show];
    }

    [url release];
    [apiKey release];
    [super viewDidLoad];
}

我知道应该在alertView被解除之后调用alertView didDismissWithButtomIndex方法,但由于某些原因,我的代码中从未调用过此方法。

    - (void)alertView:(UIAlertView *)alertView                   didDismissWithButtomIndex:(NSInteger)buttomIndex {
               if([alertView tag] == 1){
                exit(0);
               }
}

有关为何发生这种情况的任何想法?

2 个答案:

答案 0 :(得分:4)

didDismissWithButtonIndex拼写错误,你在那里偷了一个'm'而不是'n'。

答案 1 :(得分:1)

您正在侦听错误的方法,您应该实施:

alertView:clickedButtonAtIndex:

在doc中你可以读到,当在alertView上调用dismissWithClickedButtonIndex:animated:时,会调用didDismissWithButtomIndex。

  

alertView:didDismissWithButtonIndex:   从屏幕上关闭警报视图后发送给代理人。

因此,要使您的代码正常工作,您应该实现以下内容:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
  if(buttonIndex == ...) {
    // do something
  }
}

PS:您不应该调用exit(0),iOS上强制应用程序退出是不好的做法。用户应该使用主页按钮退出应用程序。