【问题标题】:iOS - Is UITableViewCellDelegate Necessary When I Have Helper Class?iOS - 当我有 Helper 类时是否需要 UITableViewCell 委托?
【发布时间】:2016-08-25 11:24:24
【问题描述】:

我被教导要始终为 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];
}

当我已经有一个助手类来为我执行操作时是否需要委托,或者如果我不使用委托会导致未来的问题?

【问题讨论】:

    标签: ios objective-c uitableview delegation


    【解决方案1】:

    遵循 MVC 模式。

    DummyPreferenceCell 扩展了 UITableViewCell,这只是 Modal View Controller 范例的 View 的一部分

    在 MVC 中,视图没有分配管理数据的责任。 这就是模型所做的。所以实际上传回是正确的 选择到控制器,控制器将其传递给模型,然后 您可以在那里进行所有验证

    【讨论】:

    • 谢谢!尽管它看起来有点多余,但我想我会保持原样。
    【解决方案2】:

    如果您需要 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];
    }
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 2012-03-22
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多