Ios 如何访问在viewDivLoad中创建的视图

Ios 如何访问在viewDivLoad中创建的视图,ios,swift,Ios,Swift,当我试图编译此代码时,我得到一个错误: class ViewController: UIViewController { @IBAction func button_down(_ sender: Any) { do_something(view: myView); } override func viewDidLoad() { super.viewDidLoad(); let screen_size: C

当我试图编译此代码时,我得到一个错误:

class ViewController: UIViewController
{
    @IBAction func button_down(_ sender: Any)
    {
        do_something(view: myView);
    }

    override func viewDidLoad()
    {
        super.viewDidLoad();

        let screen_size: CGRect = UIScreen.main.bounds;
        var myView = UIView(frame: CGRect(x: 0, y: screen_size.height/2 - screen_size.width/2, width: screen_size.width, height: screen_size.width));
        myView.backgroundColor = UIColor.red;
        self.view.addSubview(myView);
    }
}

我怎样才能解决这个问题?我曾尝试在viewDivLoad之外声明myView,但这是不允许的。

您肯定应该对计算机编程中的作用域概念进行一些研究-没有它很难走得太远。myView仅存在于viewDidLoad的范围内。如果希望它在该类之外可用,可以将其设置为类的属性,如下所示:

Use of unresolved identifier 'myView'
还有几点需要注意:

在Swift中,行尾不需要分号。 看起来您正在使用Interface Builder,所以我建议您以这种方式而不是以编程方式创建myView。 Swift中的函数名和变量名应采用驼峰式大小写-因此按钮向下而不是按钮向下,屏幕大小而不是屏幕大小。
这是一个叫做变量范围的概念。基本上,您不能声明某些东西—在本例中,在函数内声明一个名为myView的UIView,并在第二个函数中引用它。您需要在比viewDidLoad更大的范围内定义视图。例如,将其定义为实例变量-在视图控制器内部但在任何函数外部,然后删除viewDidLoad中的变量。仅供参考,您正在犯一些新手错误,例如设置帧而不是使用自动布局。用你的代码,试着在iPhone4S和iPhone7Plus上运行它。你会明白我在说什么的。谢谢你的建议!
class ViewController: UIViewController
{
    var myView: UIView!

    @IBAction func buttonDown(_ sender: Any)
    {
        doSomething(view: myView)
    }

    override func viewDidLoad()
    {
        super.viewDidLoad()

        let screenSize: CGRect = UIScreen.main.bounds
        myView = UIView(frame: CGRect(x: 0, y: screenSize.height/2 - screenSize.width/2, width: screenSize.width, height: screenSize.width))
        myView.backgroundColor = UIColor.red
        self.view.addSubview(myView)
    }
}