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.
中删除委托方法
我有一个父 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>
希望对您有所帮助。
如果你定义 alertView:clickedButtonAtIndex: 委托方法 class 即 super class 和 sub class 然后super class 方法不会被调用,因为你必须从 sub class.
中删除委托方法