Añadir un delegate custom (por ejemplo para un boton custom)
protocol CMMAlertViewDelegate: AnyObject {
func goToLogin();
func removeUserAccount();
func removeVideo(show: CMMSegmentItem)
}
class CMMAlertView: BaseView {
weak var delegate: CMMAlertViewDelegate?;
@IBAction func onAcceptButtonClick(_ sender: UIButton) {
if self.delegate != nil {
self.delegate!.goToLogin()
}
}
//EN CLASE DESTINO
// MARK: - CMMAlertViewDelegate
func goToLogin() {
self.showLogin();
}
1) en el .h de la view del componente
@protocol LODaySelectorViewDelegate <NSObject>
- (void)day:(int) day isSelected:(BOOL)selected;
@end
@interface LODaySelectorView : UIView <UIGestureRecognizerDelegate>
@property (weak) id<LODaySelectorViewDelegate> delegate;
@property (nonatomic) BOOL selected;
2) en el .m
EN COMMON INIT O INITWITHFRAME (DESPUÉS DE LA CREACIÓN) ENLAZAR CON EL EVENTO
handle_tap(self.vwBackground, self, @selector(onButtonPressed:));
-(void) updateUI{
if (_selected){
_vwBackground.backgroundColor = UIColorFromRGB(COLOR_BACKGROUND_DAYSELECTOR_SELECTED);
_lblDay.textColor = UIColorFromRGB(COLOR_FONT_DAYSELECTOR_SELECTED);
}else{
_vwBackground.backgroundColor = UIColorFromRGB(COLOR_BACKGROUND_DAYSELECTOR_NORMAL);
_lblDay.textColor = UIColorFromRGB(COLOR_FONT_DAYSELECTOR_NORMAL);
}
}
#pragma mark - UI Actions
- (void) onButtonPressed:(UITapGestureRecognizer*) sender{
_selected = !_selected;
[self updateUI];
if(self.delegate){
[self.delegate day:self.tag isSelected:self.selected];
}
}
3) En el .h view controller de la vista que llama al componente:
#import "LODaySelectorView.h" de la clase del componente
@interface LOSetTimeRangeViewController : LOViewController <LODaySelectorViewDelegate>
4) en el .m, en la creacion del componente:
LODaySelectorView *day = [[LODaySelectorView alloc] initWithFrame:CGRectMake((dayWidth*i)+20, 0, dayWidth, dayWidth) andLabel:dayLabel andState:daySelected];
day.tag =i;
day.delegate=self;
[self.vwDaysOfTheWeek addSubview:day];
y la implementación del evento:
#pragma-mark
- (void)day:(int)day isSelected:(BOOL)selected{
[self.selectedApp.daysOfTheWeek replaceObjectAtIndex:day withObject:[NSNumber numberWithBool:selected]];
}