我正在使用Xcode 6.3.2中的iOS 8.3中的项目,当我的Web服务返回错误时,我在AlertView
类中放置了AppDelegate
,但是当我尝试单击“取消”按钮时在模拟器上,它没有响应。有没有人面临同样的错误?
以下是我的代码:
UIAlertView *alertFailure = [[UIAlertView alloc] initWithTitle:@"Error Occured" message:@"Something went wrong" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alertFailure show];
编辑1:根据请求添加了委托方法
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
// the user clicked OK
if (buttonIndex == 0) {
// do something here...
alertView.hidden = YES;
}
}
编辑2:甚至没有感知代表
AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate, UIAlertViewDelegate>
答案 0 :(得分:0)
如果您还没有,则需要添加AppDelegate
符合UIAlertViewDelegate
的内容:
在AppDelegate.h
:
@interface AppDelegate : UIResponder <UIApplicationDelegate, UIAlertViewDelegate>
修改:我刚刚创建了一个empty project并将您的代码粘贴到applicationDidBecomeActive:
中,然后就可以了。没有代表方法,没有任何东西。也许删除整个alertView:clickedButtonAtIndex:
方法?
编辑2 :如果您的目标只是针对iOS 8+,那么您可以(并且应该在iOS 8中弃用UIAlertView
)使用新的UIAlertController
:
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Error Occurred"
message:@"Something went wrong."
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}];
[alert addAction:defaultAction];
[self.window.rootViewController presentViewController:alert animated:YES completion:nil];
答案 1 :(得分:0)
您必须在应用程序中实现以下委托方法。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
在这里,只要你点击取消按钮,它就可以正常工作。似乎您已经为UIAlertView设置了委托。
如果您仍然遇到任何问题,请告诉我。
答案 2 :(得分:0)
如果您的目标是iOS 8.3,您可以使用UIAlertController而不是UIAlertView,您不需要实现任何协议或设置委托,只需使用操作:
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Error Occured"
message:@"Something went wrong"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"OK"
style:UIAlertActionStyleCancel
handler:NULL];
[alert addAction:cancel];
[self presentViewController:alert
animated:YES
completion:nil];