oscarimonbox
1/12/2016 - 11:34 AM

0delegate Añadir un delegate custom (por ejemplo para un boton custom)

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]];
}