UIAlertView不会调用它的方法目标c
问题描述:
这是我的代码。我正在开发一个BAC计算器应用程序。我试图添加一条警告,要求用户确认他们何时添加饮料(表明他们只是喝了一杯标准饮料)。确认后,我希望它增加BAC(这是一个全局浮点变量),然后更新显示用户的BAC(self.BACNum.text)的视图控制器上的标签。UIAlertView不会调用它的方法目标c
问题是当用户按下确定时,UIAlert没有响应。请帮忙!
- (IBAction)AddDrink:(id)sender {
UIAlertView *addDrinkAlert = [[UIAlertView alloc] initWithTitle:@"Confirm adding one standard drink." message:@"A standard drink is 12oz beer, 5oz wine, or a 1.5 oz shot of 80 proof liquor." delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
[addDrinkAlert show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 1)
{
if ([gender isEqualToString:@"Male"]) {
genderConst = 0.68;
}
else {
genderConst = 0.55;
}
BAC += (2.84)/([weight floatValue]*genderConst);
self.BACNum.text = [NSString stringWithFormat:@"%.3f", BAC];
[NSTimer scheduledTimerWithTimeInterval: 60.0 target:self selector:@selector(metabolize:) userInfo:nil repeats: YES];
[self.navigationController popViewControllerAnimated:YES];
return;
}
else {
return;
}
}
答
delegate:nil
还有就是你的问题。你应该在这里传递一个符合UIAlertViewDelegate
协议的对象并实现-alertView:clickedButtonAtIndex:
方法。你的情况是self
。
+0
谢谢!这工作! – 2014-12-05 04:21:39
答
设置委托delegate:self
UIAlertView *addDrinkAlert = [[UIAlertView alloc] initWithTitle:@"Confirm adding one standard drink." message:@"A standard drink is 12oz beer, 5oz wine, or a 1.5 oz shot of 80 proof liquor." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
[addDrinkAlert show];
答
我都面临着同样的问题,当我有我的编译为iOS 8代码中发现很多东西我开始认识到关于为iOS 8之后,我们必须使用AlertController ,Apple从现在开始不再支持UIAlertView。这就是为什么你的alertViewDelegate方法不起作用。
请尝试下面的代码,这将工作肯定。
UIAlertController *alertController=[UIAlertController alertControllerWithTitle:@"Confirm adding one standard drink." message:@"A standard drink is 12oz beer, 5oz wine, or a 1.5 oz shot of 80 proof liquor." preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action)
{
// code for OK Button click
}];
[alertController addAction:okAction];
[self presentViewController:alertController animated:YES completion:nil];
将代表设置为self; – 2014-12-05 04:18:34
编码为iOS版本?,如果您正在编写iOS 8,那么这将不起作用(可能是你在iOS 8模拟器中测试)。对于iOS 8使用AlertViewController(我遇到了同样的问题)。 – 2014-12-05 04:57:58
看到我的答案如何使用UIAlertController – 2014-12-05 05:08:00