我正在制作应用,我正在尝试创建一个包含带问题标签的视图。我想在我的应用程序中看到这个视图,因为我会反复使用它,我做了一个课程(如果我想做一些改变,我可以从一个地方做到)。 UIView
被称为questionView
(var questionView = UIView()
)。问题是当我想questionView
view
的子视图时。错误说我没有“理解”,我理解。我没有观点,但我怎么能得到它?谢谢
这是我的问题类中的内容:
import Foundation
import UIKit
class Question {
// PROPERTIES:
var questionLabel = UILabel()
var questionView = UIView()
// METHODS:
func createQuestion (input:String) {
// some code .... not important
// THIS:
self.view.addSubview(questionView)
}
// ... next code, also not important
}
更新:
有我的解决方案。它工作但我认为从编程的角度来看它是不正确的。谁能跟我说说什么呢?谢谢
我的班级在单独的swift文件中:
我的班级在单独的swift文件中:
class LabelClass {
var view = UIView()
init (view: UIView) {
self.view = view
}
var lbl = UILabel()
var lblView = UIView()
func makeLabel () {
self.lbl.frame = CGRectMake(0, 0, 150, 50)
self.lbl.text = "Text text text"
self.lbl.numberOfLines = 0
self.lblView.frame = CGRectMake(20, 20, 150, 50)
self.lblView.addSubview(self.lbl)
self.view.addSubview(lblView)
}
}
一段代码我的ViewController.swift:
override func viewDidLoad() {
super.viewDidLoad()
// Added code:
var object = LabelClass(view: self.view)
object.makeLabel()
}
答案 0 :(得分:1)
我不知道Swift,但据我所知,只有UIViewController
的实例有view
属性,而类Question
没有,所以你不能添加子视图。
您可能想要的是创建包含问题标签的UIView
的子类,或者将questionLabel
添加为questionView
的子视图。
答案 1 :(得分:1)
这是因为您正在尝试将视图添加到没有self.view实例的普通Swift类中。您的Question
类必须是UIViewController
cocoa类的子类,它具有self.view实例和覆盖方法。
class Question:UIViewController {
// PROPHERITIES:
var questionLabel = UILabel()
var questionView = UIView()
// METHODS:
override func viewDidLoad() {
createQuestion("foo")
}
func createQuestion (input:String) {
// some code .... not important
// THIS:
self.view.addSubview(questionView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// ... next code, also not important
}