2016-04-30 12 views
0

私はUITableViewCellの代理人を常に使用するよう教えられましたが、MyDefaultsというヘルパークラスがあり、特定の環境設定を取得してNSUserDefaultsに設定しています。iOS - ヘルパークラスを使用するとUITableViewCellDelegateは必要ですか?

これは私が現在、それをやっている方法です:私のDummyPreferenceCell.h

DummyPreferenceCell.m
@protocol DummyPreferenceCellDelegate <NSObject> 

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

@end 

私の親 ViewController.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]; 
} 

#pragma mark - DummyPreferenceCellDelegate 

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

私のためのアクションを実行するためのヘルパークラスを既に持っている場合は、委任が必要ですか?委任を使用しないと将来の問題が発生しますか?

答えて

3

MVCパターンに従います。

DummyPreferenceCell MVC、データを管理する責任を割り当てられたビューイマイチでモーダルビューコントローラパラダイム

のビューであることのほんの一部であるUITableViewCellを拡張します。 これはモデルの機能です。それはあなたが必要なときUISegmentedControl値の変化のViewControllerでイベントが必要な場合があるすべての検証

+0

感謝を助けます!それは少し冗長に見えますが、私はそれをそのまま保つと思います。 – Rafi

1

を行うことができます 、モデルに渡しとなりますコントローラに 選択を返すためInfactは正しいですデリゲートを書くことができなければ、それをヘルパークラスに格納することができます。あなたがデリゲートを書くたびにそれはすべきです。

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

希望これは

関連する問題