我正在创建一个注册表单应用程序 . 该应用程序的用户将能够添加和删除问题 .
所以基本上我有一个叫做问题的课程,“修改”问题的方法也会在其下面 . 现在我正在研究向表单添加问题的方法 .
一个问题包括:
-
UILabel
(你叫什么名字?) -
UITextField
或UISegmentedControl
(用于多项选择题)
我是Swift的新手,我仍然认为是面向对象编程的初学者 . 现在我正在尝试设计Questions类布局,它看起来像这样吗?
class Question {
var label: UILabel
var multiChoice: UISegmentedControl
var textInput: UITextField
init(label: UILabel, multiChoice: UISegmentedControl, textInput: UITextField) {
self.label = label
self.multiChoice = multiChoice
self.textInput = textInput
}
// methods for adding question
}
显然,问题的构成将取决于用户采取的动作(按下按钮) . 当用户选择添加新问题时,他们将输入标签,并决定是否要使用分段控件或文本字段 .
这是我的问题所在 . 在用户决定参数后,我添加问题的方法应该创建一个问题的新实例,该实例将被返回 . 然后,应将此问题的新实例添加到存储所有已创建问题的数组中 . 这个数组是在动作中初始化的(按下添加问题按钮)还是应该全局初始化,所以我添加的所有未来方法都可以访问它 .
1 回答
全局变量越少越好 .
鉴于上面的类,我希望你创建
Question
的方法将是一些UIViewController子类的方法,包含所有Questions的数组应该是同一个视图控制器子类的属性 .创建问题的方法必须将标签,segmentedControl和textInputs添加到某些UIView(可能是视图控制器的主视图),以便它们可见 .
另一个快速说明......如果一个问题可以是文本输入也可以是多项选择,但不能同时选择两者,那么这一个类不应该包含两个字段 . 您可能需要两个
Question
子类(可能是FillInQuestion
和MultiChoiceQuestion
),这两个子类可能都是从Question
基类派生的 .