我有一个父类和5个子类。在这5个类中有2个类(sub),其中我使用了AlertView并使用了alert委托方法。 在子类中,我有一个公共按钮,通过该按钮可以调用父类的警报委托。这是“退出”按钮。通过哪个父类'警报委托可访问。那么所发生的是我使用alert delegate的类(在我的例子中有2个这样的类),父类的委托没有被调用。但是我没有使用来自那些类父类'委托的警报视图的类被调用。 我不知道我是否有意义,如果没有,请告诉我,我会再次尝试更好地解释。
//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];
}
}
答案 0 :(得分:1)
从子类中删除alertView:clickedButtonAtIndex:
方法。
如果您的第二个类是第一个类(Parent类)的子类,则不需要在子类中重新实现父类方法,除非您要添加一些额外的功能。由于第二类已经继承了所有父类方法。
因此,如果从子类中删除委托方法,则会自动调用父类方法。
答案 1 :(得分:0)
使用<UIAlertViewDelegate>
而不是子类确认父类,然后将在父及其所有子类中调用alertView委托。请确保,您不会再次使用rails new app_name -m template_name.rb
希望这有帮助。
答案 2 :(得分:0)
如果你定义 alertView:clickedButtonAtIndex:委托方法,那么我面临同样的问题,即超类和子类,那么超类方法就不会调用你必须从子类中删除委托方法