如何重构集合UI(iOS)元素,以便它们可重用

时间:2015-03-17 13:57:10

标签: ios

Refactoring 3 different UI components into one UIView into a CocoaPod类似,但我想也许我正在做核心重构错误。

所以,我有一个3 UIView个元素,我一直在重用:

  • 标签
  • 输入
  • 复选标记

我还想要重构一些验证和其他逻辑(就像保持新类一样,逻辑也被重用)。

那么,我是否要从UIViewController子类开始,并在我使用这些元素或UIView的任何地方添加?

我不知道UIVew应该/可能需要验证逻辑。那么,我需要UIViewController。但这对我来说没有多大意义,因为你的视图中有UIView个对象,而不是UIVIewController个对象。

思考?

编辑:

  • 有什么验证?
  • 基本上有标签,输入和复选框。
  • 当用户输入文本时,标签会更改颜色,并且复选标记会根据验证更改状态(我实际上是要进行验证委托)
  • 当用户完成编辑并且一切正常时,复选标记为绿色&标签再次改变颜色。

1 个答案:

答案 0 :(得分:0)

我在my latest blog post中提到了这个问题。

您的问题中提供的信息非常少,无法提供详细的答案,但您可以采取多种方式。

您需要创建一个UIView子类并为其添加subviews作为标签,输入和复选标记,并将它们作为属性提供,以便您可以执行类似...

myReusableView.label.text = @"Hello world";

[myReusableView.input becomeFirstResponder];

然后你需要实际添加这些子视图。这可以在代码中完成......

- (instancetype)initWithFrame:(CGRect)frame
{
    ...
    self.label = [UILabel new];
    self.label.frame = //blah
    [self addSubview:self.label];
    ...
}

或者你可以用笔尖做这个并附上插座......

在那里进行少量验证没有任何问题。这种情况很多时候都会发生。例如,如果您尝试将progressView值设置为大于1,那么它将捕获它并将其设置为1,依此类推。

这还取决于您正在进行的验证。您总是可以将它放在viewController中并将其用作子视图控制器(我个人不会这样做)。

你可以提供委托方法来"外包"验证到其他地方。

您正在做什么验证?