我正在创建注册表单应用程序。该应用程序的用户将能够添加和删除问题。
所以基本上我有一个叫做问题的课程和修改"的方法。问题将归于此。现在我正在研究向表单添加问题的方法。
问题包括:
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
}
显然,问题的构成将取决于用户采取的动作(按下按钮)。当用户选择添加新问题时,他们将输入标签,并决定是否要使用分段控件或文本字段。
这里是我的问题所在。在用户决定参数后,我添加问题的方法应该创建一个问题的新实例,该实例将被返回。然后,应将此问题的新实例添加到存储所有已创建问题的数组中。这个数组是在动作中初始化的(按下添加问题按钮)还是应该全局初始化,所以我添加的所有未来方法都可以访问它。
答案 0 :(得分:0)
全局变量越少越好。
鉴于上面的类,我希望你创建Question
的方法将是某个UIViewController子类的方法,包含所有Questions的数组应该是同一个视图控制器子类的属性。
创建问题的方法必须将标签,segmentedControl和textInputs添加到某些UIView(可能是视图控制器的主视图),以便它们可见。
另一个快速说明......如果一个问题可以 文本输入或多项选择,但不是两者兼而有,那么这一个类不应该同时包含这两个字段。您可能需要两个Question
子类(FillInQuestion
和MultiChoiceQuestion
,可能都来自Question
基类。