在BaseViewController中创建视图并在SubviewController中使用

时间:2019-03-03 14:30:54

标签: swift xcode

您好,我使用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继承)

1 个答案:

答案 0 :(得分:0)

  1. 您不要在FirstVC的viewDidLoad()覆盖中调用super.viewDidLoad()

  2. 您永远不会将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
    }
}