Añadir un delegate custom
1) en el .h de la view (ej. LOConfirmAlertView.h)
@class LOConfirmAlertView;
@protocol LOConfirmAlertViewDelegate <NSObject>
- (void)confirmAlertViewFirstButton:(LOConfirmAlertView *)cav;
- (void)confirmAlertViewSecondButton:(LOConfirmAlertView *)cav;
- (void)confirmAlertViewClosed:(LOConfirmAlertView *)cav;
@end
@interface LOConfirmAlertView : UIView
@property (weak, nonatomic) IBOutlet UILabel *lblTitle;
@property (weak, nonatomic) IBOutlet UILabel *lblMesssage;
@property (weak, nonatomic) IBOutlet UIButton *btnFirstButton;
@property (weak, nonatomic) IBOutlet UIButton *btnSecondButton;
@property (weak, nonatomic) IBOutlet UIImageView *btnCloseButton;
@property (weak) id<LOConfirmAlertViewDelegate> delegate;
- (instancetype)initWithFrame:(CGRect)frame
withTitle :(NSString*) title
andText:(NSString*) text
andFirstButton:(NSString*) firstButtonText
andSecondButton:(NSString*) secondButtonText;
@end
2) en el .m
a) en el commonInit asociar el tap a los botones:
handle_tap(self.btnCloseButton, self, @selector(onClosePressed:));
handle_tap(self.btnFirstButton, self, @selector(onFirstButtonPressed:));
handle_tap(self.btnSecondButton, self, @selector(onSecondButtonPressed:));
b) asociar el delegate al evento
- (void) onClosePressed:(UITapGestureRecognizer*) sender{
if(self.delegate){
[self.delegate confirmAlertViewClosed:self];
}
}
- (void) onFirstButtonPressed:(UITapGestureRecognizer*) sender{
if(self.delegate){
[self.delegate confirmAlertViewFirstButton:self];
}
}
- (void) onSecondButtonPressed:(UITapGestureRecognizer*) sender{
if(self.delegate){
[self.delegate confirmAlertViewSecondButton:self];
}
}
3) en el .h de la clase desde la que se llama
@interface LOAppsViewController : LOViewController <LOConfirmAlertViewDelegate>
4) Implementar la llamada y delegate de cada evento
UIWindow* window = [UIApplication sharedApplication].keyWindow;
LOConfirmAlertView *cav = [[LOConfirmAlertView alloc] initWithFrame:CGRectMake(0, 0, window.frame.size.width, window.frame.size.height)
withTitle:NSLocalizedString(@"AppLock_Title",nil)
andText:NSLocalizedString(@"AppLock_Message",nil)
andFirstButton:NSLocalizedString(@"AppLock_SetTimeRange",nil)
andSecondButton:NSLocalizedString(@"AppLock_AtAllTimes",nil) ];
cav.delegate = self;
[self.view addSubview:cav];
#pragma-mark LOConfirmAlertViewDelegate
- (void) confirmAlertViewFirstButton: (LOConfirmAlertView*) cav{
[cav removeFromSuperview];
[self setTimeRange];
}
-(void) confirmAlertViewSecondButton: (LOConfirmAlertView*) cav{
[cav removeFromSuperview];
[self prepareNewTimeRange];
}
-(void) confirmAlertViewClosed: (LOConfirmAlertView*) cav{
[cav removeFromSuperview];
}
-(void) closeAlert{
[self.tableView reloadData];
}