为灵活性问题类型设计测验应用程序

时间:2012-09-18 17:04:21

标签: objective-c ios dynamic

我正在创建一个测验应用,该应用使用名为ViewController的{​​{1}}加载并显示自定义QuestionViewController课程中的问题数据。现在,我只是检查Question以确定如何显示questionType的{​​{1}}个孩子。然后我有很多if / then语句来显示Answer,它可以是:

  • buttonType(收音机/复选框)
  • inputFieldType
  • datePickerType
  • (任何其他类型)

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

我是否在正确的轨道上?有什么东西我缺少/应该改进吗?

1 个答案:

答案 0 :(得分:1)

听起来我觉得你走在正确的轨道上。但要记住的一件事是,你的问题很可能都要做一些相同的事情,比如...显示问题!这非常适合子类化如下:

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

无论问题/答案类型如何,每个Question都必须显示某些信息。例如,您的每个问题都可能会显示问题的文本UILabelUITextView。此标签的位置,字体等可能不会在不同问题之间发生变化,因此应在问题QuestionViewController中进行设置,其中答案(其格式可能会有所不同,如你所述)可以在你实现的各种CustomQuestionViewController中进行设置。这将极大地减少问题视图控制器中潜在的代码重复,因为他们可以在QuestionViewController内完成相同的操作。

如果你做了如下的子类化......

UIViewController - > CustomQuestionViewController1

UIViewController - > CustomQuestionViewController2

您可能会在设置基本问题显示时遇到大量重复代码。

另外,请将它们命名为CustomQuestionViewController1哈哈。