2016-04-30 33 views
0

我被教導總是使用代表UITableViewCell,但我已經有一個名爲MyDefaults的幫助類,它處理獲取和設置某些首選項至NSUserDefaultsiOS - 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這只是作爲模態視圖控制器模式

在MVC中,視圖心不是指派專人負責管理數據的視圖的一部分。 這就是模型所做的。所以它是逸岸正確,傳回 選擇控制器將它傳遞給模型,然後 你可以做所有的驗證,有

+0

謝謝!即使它看起來有點多餘,我想我會保持它的方式。 – Rafi

1

,如果你需要的時候你需要UISegmentedControl價值變動的ViewController事件編寫委託,否則你可以將它存儲在你的助手類中。每當你寫代表它應該是。

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

希望這有助於