UIAlertView 委托没有被调用?

UIAlertView delegate not getting called?

我有一个父 class 和 5 个子 class。在这 5 个中,有 2 个 classes(sub) 我在其中使用了 AlertView 并使用了警报委托方法。 在 sub classes 中,我有一个公共按钮,通过它可以调用父 class' 警报委托。这是 "Logout" 按钮。通过它可以访问父 class 的警报委托。所以发生的是我使用警报委托的 classes(在我的例子中有 2 个这样的 classes)父 class' delegate is not getting called 。但是我没有使用那些 classes 父 class 委托的警报视图的 class 正在被调用。 我不知道我是否有道理,如果没有,请告诉我,我会再尝试解释得更好。

//parent class
-(void)someMethod
{
    UIAlertView * alertView =[[UIAlertView alloc]initWithTitle:ALERT_TITLE message:@"Are you sure want to logout?" delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"No", nil];

    [alertView show];
}

// not getting called "only" when I have alert view in my sub class
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 0) {
        [[AppDelegate appDelegate]logout];
        [[AppDelegate appDelegate]saveWelComeBool:YES];
    }
}


 //sub class
 ParentClass *parent = [[ParentClass alloc]init];
 [parent someMethod];// method is getting called but not the alert delegate

-(void)someMethod2
{
    UIAlertView * alertView =[[UIAlertView alloc]initWithTitle:ALERT_TITLE message:@"Are you sure want to logout?" delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"No", nil];

    [alertView show];
}

//getting called
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 0) {
        [[AppDelegate appDelegate]logout];
        [[AppDelegate appDelegate]saveWelComeBool:YES];
    }
}

从子class中删除alertView:clickedButtonAtIndex:方法。

如果您的第二个 class 是第一个 class 的子class(父 class),您不需要重新实现父 [= subclass 中的 17=] 方法,除非您要添加一些额外的功能。由于第二个 class 已经继承了所有父 class 方法。

因此,如果您从子class中删除委托方法,将自动调用父class方法。

确认父 class 使用 <UIAlertViewDelegate> 而不是子 class,然后将在父及其所有子 class 中调用 alertView 委托.请确保,您不要使用 <UIAlertViewDelegate>

再次确认 subclass

希望对您有所帮助。

如果你定义 alertView:clickedButtonAtIndex: 委托方法 class 即 super class 和 sub class 然后super class 方法不会被调用,因为你必须从 sub class.

中删除委托方法