我对Swift很新。我正在创建一个允许用户创建注册表单的应用程序。我有两个文件/场景,FirstViewController和SecondViewController。 SecondViewController允许用户创建问题。 FirstViewController将在UITableView中显示所有创建的问题。在我的SecondViewController中,我有一个名为Question的类,它基本上可以帮助我创建一个问题,它在下面显示了上下文。
class Question {
var Label: String
var required: Int
// create question
init (Label: String, required: Int) {
self.Label = Label
self.required = required
}
}
class textInput: Question {
var placeHolder: String
init (placeHolder: String, Label: String, required: Int) {
self.placeHolder = placeHolder
super.init(Label: Label, required: required)
}
}
class multiChoice: Question {
var answers: [String]
init(answers: [String], Label: String, required: Int) {
self.answers = answers
super.init(Label: Label, required: required)
}
}
在FirstViewController中,我需要创建一个该类型的数组,以保存UITableView中所有问题的运行列表......
var formQuestions: [Question]
显然,FirstViewController无法访问此自定义对象类型。我的问题是如何制作它呢?我可以将整个类复制并粘贴到我的FirstViewController上,但那将是糟糕的编程......
感谢您的帮助。
答案 0 :(得分:1)
您的FirstViewController
无法访问Question
类及其子类,因为它们都在SecondViewController
中声明。这意味着它们是SecondViewController
的本地,而其他任何地方都无法访问它。您需要做的是使问题类全局。
所以目前您的课程如下:(内容省略)
class SecondViewController: UIViewController {
class Question {
}
class TextInputQuestion: Question {
}
class MultiChoiceQuestion: Question {
}
}
您应该将它们移出SecondViewController
:
class SecondViewController {
}
class Question {
}
class TextInputQuestion: Question {
}
class MultiChoiceQuestion: Question {
}
哦顺便说一下,我改名了你的班级名字!你应该总是使用PascalCase作为类,我认为添加单词Question
将更能描述它们是什么。