Ios 在viewDidLoad中初始化类并将其分配给成员变量
我有一个customview,一个Ios 在viewDidLoad中初始化类并将其分配给成员变量,ios,swift,Ios,Swift,我有一个customview,一个UIView的子类,但当我尝试初始化为类属性时,它会给我带来不想要的行为,我在这里提到过, 但是在viewDidLoad()中工作正常 我需要通过SignViewController 我试过了,但是没有用 class SignViewController: UIViewController, UIScrollViewDelegate { var hermiteScribbleView:HermiteScribbleView? override
UIView
的子类,但当我尝试初始化为类属性时,它会给我带来不想要的行为,我在这里提到过,
但是在viewDidLoad()
中工作正常
我需要通过SignViewController
我试过了,但是没有用
class SignViewController: UIViewController, UIScrollViewDelegate
{
var hermiteScribbleView:HermiteScribbleView?
override func viewDidLoad()
{
super.viewDidLoad()
let hermiteScribbleView1 = HermiteScribbleView()
hermiteScribbleView = hermiteScribbleView1
}
}
这里是我使用房产的许多地方之一
func landscapeOps(){
hermiteScribbleView?.triggerLandscape()
if(hermiteScribbleView?.currentStage == 0 ) {
hermiteScribbleView?.backgroundLayer2.isHidden = true
hermiteScribbleView?.backgroundLayer1.isHidden = false
}else if (hermiteScribbleView?.currentStage == 1) {
hermiteScribbleView?.LineLayer.isHidden = true
hermiteScribbleView?.backgroundLayer1.isHidden = true
hermiteScribbleView?.backgroundLayer2.isHidden = false
}
}
为什么将其初始化为类属性如此重要?我已经编辑了一个问题,其中显示了我使用该属性的一次,是否有其他方法?我建议使用惰性初始值设定项。正如我所记得的,swift有内置的lazy-vars特性。另外,您也可以编写一个经典的惰性函数初始值设定项。您应该创建一个协议/委托,您的高级类不应该编辑该视图,只要告诉它更改或调用为该视图准备的方法,在hermiteScribbleViewlazy中,这似乎是正确的方法,它只会在第一次在代码中调用该属性时初始化该属性
func landscapeOps(){
hermiteScribbleView?.triggerLandscape()
if(hermiteScribbleView?.currentStage == 0 ) {
hermiteScribbleView?.backgroundLayer2.isHidden = true
hermiteScribbleView?.backgroundLayer1.isHidden = false
}else if (hermiteScribbleView?.currentStage == 1) {
hermiteScribbleView?.LineLayer.isHidden = true
hermiteScribbleView?.backgroundLayer1.isHidden = true
hermiteScribbleView?.backgroundLayer2.isHidden = false
}
}