0

我正在创建一个测验应用程序,它使用ViewController命名QuestionViewController来加载和显示来自自定义Question类的问题数据。现在,我只是检查questionType来确定需要如何显示的Answer孩子Question。然后我有很多 if/then 语句来显示answerTypes其中可以是:

  • buttonType(单选/复选框)
  • 输入字段类型
  • 日期选择器类型
  • (任何其他类型)

这工作正常,但它真的很草率。我想Question使用 if/then 加载然后找到问题的类型,我相信我应该为每个 questionType 创建自定义视图控制器并显示它,并可能添加协议以在输入发生更改时返回。这是正确的方法吗?我想尽可能保持问题类型的动态,以便在需要时添加未来的类型。

我在正确的轨道上吗?有什么我遗漏/应该改进的吗?

4

1 回答 1

1

在我看来,你在正确的轨道上。但是要记住的一件事是,您的问题可能都必须做一些相同的事情,例如...显示问题!这很适合子类化,如下所示:

UIViewController-> QuestionViewController-> CustomQuestionViewController1 UIViewController-> QuestionViewController-> CustomQuestionViewController2 UIViewController-> QuestionViewController->CustomQuestionViewController3

等等

无论问题/答案类型如何,每个Question人都必须显示某些信息。例如,您的每个问题都可能有某种UILabelUITextView显示问题的文本。此标签的位置、字体等可能不会因问题而异,因此应在 question's 中进行设置QuestionViewController,因为答案(如您所提到的,其格式可能会有所不同)可以在CustomQuestionViewController您的各种 s 中设置实施。这将大大减少您问题的视图控制器中潜在的代码重复,因为它们执行相同的操作可以在您的QuestionViewController.

如果您像下面那样进行子类化...

UIViewController->CustomQuestionViewController1

UIViewController->CustomQuestionViewController2

您最终可能会使用大量重复代码来设置基本问题显示。

另外,命名它们比哈哈更好CustomQuestionViewController1

于 2012-09-18T17:32:35.947 回答