我正在创建一个测验应用,该应用使用名为ViewController
的{{1}}加载并显示自定义QuestionViewController
课程中的问题数据。现在,我只是检查Question
以确定如何显示questionType
的{{1}}个孩子。然后我有很多if / then语句来显示Answer
,它可以是:
这样可以,但它真的很草率。我想加载Question
然后使用if / then找到问题类型我相信我应该为每个questionType创建自定义视图控制器并显示该可能会添加输入发生变化时返回的协议。这是正确的方法吗?我想让问题类型尽可能保持动态,这样我就可以在需要时添加未来的类型。
我是否在正确的轨道上?有什么东西我缺少/应该改进吗?
答案 0 :(得分:1)
听起来我觉得你走在正确的轨道上。但要记住的一件事是,你的问题很可能都要做一些相同的事情,比如...显示问题!这非常适合子类化如下:
UIViewController
- > QuestionViewController
- > CustomQuestionViewController1
UIViewController
- > QuestionViewController
- > CustomQuestionViewController2
UIViewController
- > QuestionViewController
- > CustomQuestionViewController3
等
无论问题/答案类型如何,每个Question
都必须显示某些信息。例如,您的每个问题都可能会显示问题的文本UILabel
或UITextView
。此标签的位置,字体等可能不会在不同问题之间发生变化,因此应在问题QuestionViewController
中进行设置,其中答案(其格式可能会有所不同,如你所述)可以在你实现的各种CustomQuestionViewController
中进行设置。这将极大地减少问题视图控制器中潜在的代码重复,因为他们可以在QuestionViewController
内完成相同的操作。
如果你做了如下的子类化......
UIViewController
- > CustomQuestionViewController1
UIViewController
- > CustomQuestionViewController2
您可能会在设置基本问题显示时遇到大量重复代码。
另外,请将它们命名为CustomQuestionViewController1
哈哈。