2016-04-30 7 views
0

Меня учили всегда использовать делегаты для UITableViewCell, но у меня уже есть класс-помощник: MyDefaults, который обрабатывает получение и установку определенных настроек на NSUserDefaults.iOS - Требуется ли UITableViewCellDelegate, когда у меня есть класс-помощник?

Это, как я сейчас делаю это:

В моей DummyPreferenceCell.h:

@protocol DummyPreferenceCellDelegate <NSObject> 

-(void)setDefaultDummyPreferenceTo:(NSString *)dummyPreferenceOption; 

@end 

В моих DummyPreferenceCell.m:

- (IBAction)dummyPreferenceOptionSelected:(UISegmentedControl *)sender { 
    NSString *dummyPreferenceOption = @""; 
    switch (sender.selectedSegmentIndex) { 
     // first dummy preference option selected 
     case 0: 
      dummyPreferenceOption = @"dummyOption1"; 
      break; 

     // second dummy preference option selected  
     case 1: 
      dummyPreferenceOption = @"dummyOption2"; 
      break; 

     default: 
      NSLog(@"ERROR"); 
      return; 
      break; 
    } 
    [self.delegate setDefaultDummyPreferenceTo:dummyPreferenceOption]; 
} 

В моем родителю ViewController.m:

#pragma mark - DummyPreferenceCellDelegate 

-(void)setDefaultDummyPreferenceTo:(NSString *)dummyPreferenceOption { 
    [MyDefaults setDummyPreferenceTo:dummyPreferenceOption]; 
} 

Необходима ли делегирование, если у меня уже есть вспомогательный класс для выполнения этого действия для меня или это вызовет будущие проблемы, если я не буду использовать делегирование?

ответ

3

Следующий шаблон MVC.

DummyPreferenceCell расширяет UITableViewCell, которая только часть бытия Вида парадигмы Модального View Controller

В MVC, вид разве присвоенная ответственность за управление данными. это то, что делает модель. так что это Infact правильно передать обратно выбор на контроллер, который передаст его модели, а затем вы можете сделать все валидаций там

+0

Спасибо! Несмотря на то, что он выглядит немного избыточным, я думаю, я сохраню его так, как есть. – Rafi

1

, если вам нужно событие в ViewController о том, когда изменение значения UISegmentedControl вам нужно для записи делегата в противном случае вы можете сохранить его в своем вспомогательном классе. всякий раз, когда вы пишете делегат, это должно быть.

- (IBAction)dummyPreferenceOptionSelected:(UISegmentedControl *)sender { 
    NSString *dummyPreferenceOption = @""; 
    switch (sender.selectedSegmentIndex) { 
     // first dummy preference option selected 
     case 0: 
      dummyPreferenceOption = @"dummyOption1"; 
      break; 

     // second dummy preference option selected  
     case 1: 
      dummyPreferenceOption = @"dummyOption2"; 
      break; 

     default: 
      NSLog(@"ERROR"); 
      return; 
      break; 
    } 
    if([self.delegate respondsToSelector:@selector(setDefaultDummyPreferenceTo:) ]) 
    [self.delegate setDefaultDummyPreferenceTo:dummyPreferenceOption]; 
} 

надеюсь, что это помогает