iOS - 当我有帮助程序类时,是否需要UITableViewCellDelegate?

时间:2016-04-30 09:03:26

标签: ios objective-c uitableview delegation

我已经被教导要始终使用UITableViewCell的委托,但我已经有一个名为MyDefaults的帮助程序类来处理获取和设置某些首选项NSUserDefaults

这就是我目前正在做的事情:

在我的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];
}

当我已经有一个帮助班为我做这个动作时,是否需要授权,或者如果我不使用授权,它是否会导致未来的问题?

2 个答案:

答案 0 :(得分:3)

遵循MVC模式。

  

DummyPreferenceCell扩展UITableViewCell,这只是模态视图控制器范例的一部分

     

在MVC中,View没有分配管理数据的责任。   这就是模型的作用。所以传回来是非常正确的   选择控制器,然后将其传递给模型   你可以在那里做所有的验证

答案 1 :(得分: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];
}

希望这会有所帮助