我最近开始研究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);
}
}
有关为何发生这种情况的任何想法?
答案 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上强制应用程序退出是不好的做法。用户应该使用主页按钮退出应用程序。