在Extended和mainContorllers中调用相同的委托功能

时间:2014-08-06 09:42:01

标签: ios objective-c

我有一个带有alertDelegate功能的BaseController

这是alertView

@interface BaseController : UIViewController

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"TITLE" message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert show];

假设我有另一个会出现我的BaseController的ViewCOntorller

@interface MainController : BaseController

我面临的问题是,当我在BaseController中调用AlertView时,如果我的MainController有alertDelegate

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{    
}

仅在MainController中调用alertView委托,而不是在BaseController中调用。

我希望如何在扩展BaseController的每个屏幕中执行此警报。但是很难在每个控制器中复制粘贴相同数量的代码。有没有什么可以在BaseController中调用它,因为每个控制器都扩展它?

1 个答案:

答案 0 :(得分:3)

您必须明确调用super委托方法:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    [super alertView:alertView clickedButtonAtIndex:buttonIndex];
    // Do other stuff
}

这是因为您已经将视图控制器类子类化,因此调用任何重写的方法而不是超类方法。这包括任何协议方法,因为它们被认为没有区别。