我已设置委托:
@interface FJLockFaceViewController ()<UIAlertViewDelegate>
和无效:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (alertView.tag == 1)
{
if (buttonIndex == 1)
{
NSLog(@"YES");
[self performSegueWithIdentifier:@"Login" sender:nil];
}
}
else if (alertView.tag == 2)
{
if (buttonIndex == 1)
{
NSLog(@"NO");
[self performSegueWithIdentifier:@"Retry" sender:nil];
}
}
}
我的IBAction:
- (IBAction)Success:(UIButton *)sender
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"WELCOME!"
message:nil
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"Continue",nil];
alert.tag = 1;
[alert show];
}
- (IBAction)Fail:(UIButton *)sender
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Failed to Recognize User"]
message:nil
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"Try Again",nil];
alert.tag = 2;
[alert show];
}
但是UIAlertView上的按钮没有响应,我做错了什么?
答案 0 :(得分:1)
正如@Rushabh所说,UIAlertView
中只有一个按钮。这就是你应该使用这个块的原因:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (alertView.tag == 1) {
if (buttonIndex == 0) {
NSLog(@"YES");
[self performSegueWithIdentifier:@"Login" sender:nil];
}
}else if (alertView.tag == 2) {
if (buttonIndex == 0) {
NSLog(@"NO");
[self performSegueWithIdentifier:@"Retry" sender:nil];
}
}
}
由于点击的按钮位于索引0而不是1,因此代码不会进入if条件的成功。而且我必须说你会知道,如果你使用了正确的断点来了解导致问题的原因。此外,由于UIAlertView
中没有其他按钮,为什么还要烦恼检查按钮索引?只需检查标签即可。