您好,我使用BaseViewController并从其继承了我的视图,我在其中创建了一个视图,并希望在其他视图中使用它,但是它只存在于第一页和其他页面中
BaseViewController.swift
import UIKit
class BaseViewController: UIViewController {
var ExampleView : UIView!
override func viewDidLoad() {
super.viewDidLoad()
let ExampleView = UIView(frame: CGRect(x:0 , y: 0 ,width:100 ,height:100)
view.addSubview(ExampleView)
}
}
FirstVC
class FirstVC : BaseViewController{
override func viewDidLoad() {
ExampleView.isHidden = true
}
}
在FirstVC中它具有价值,但是在secondVC中,我使用Same FirstVC,但它为nil(通过从FirstVC到segue转到secondVC,并且secondVC也从BaseViewController继承)
答案 0 :(得分:0)
您不要在FirstVC的viewDidLoad()覆盖中调用super.viewDidLoad()
您永远不会将ExampleView分配给BaseViewController类中的属性。相反,您是在viewDidLoad方法范围内(使用相同名称)在实例属性的阴影下创建了一个局部变量。
要解决您的问题,
BaseViewController.swift
class BaseViewController: UIViewController {
var ExampleView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
ExampleView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)
view.addSubview(ExampleView)
}
}
FirstVC:
class FirstVC: BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
ExampleView.isHidden = true
}
}