在 loadView() 中声明变量时"Use of Unresolved Identifier"错误



我正在尝试创建一个简单的应用程序,当用户轻按时,标签文本将更改,如下所示。但是,在处理水龙头的功能中,它说标签尚未解决。我相信这是因为标签已加载到LoadView中,并且无法在整个课程中访问(我是初学者Swift用户,所以请原谅我,如果我错了。)这是我的代码:

import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
    override func loadView() {
        let containerView = UIView (frame: CGRect(x: 0, y: 0, width: 600, height: 600))
        containerView.backgroundColor = UIColor.white
        let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
        label.center = CGPoint(x: 160, y: 285)
        label.textAlignment = .center
        label.text = "Hey"
        containerView.addSubview(label)
        self.view = containerView
        let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:)))
        view.addGestureRecognizer(tap)
    }
    @objc func handleTap(sender:UITapGestureRecognizer) {
        label.text = "Changed"
    }
}
PlaygroundPage.current.liveView = MyViewController()

谢谢!

您已将label声明为loadView内部的本地变量 - 这意味着仅在loadView函数中才能访问。您需要它是一个财产,以便在整个班级中可以访问。

import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
    var label: UILabel!
    override func loadView() {
        let containerView = UIView (frame: CGRect(x: 0, y: 0, width: 600, height: 600))
        containerView.backgroundColor = UIColor.white
        self.label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
        self.label.center = CGPoint(x: 160, y: 285)
        self.label.textAlignment = .center
        self.label.text = "Hey"
        containerView.addSubview(self.label)
        self.view = containerView
        let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:)))
        view.addGestureRecognizer(tap)
    }
    @objc func handleTap(sender:UITapGestureRecognizer) {
        self.label.text = "Changed"
    }
}
PlaygroundPage.current.liveView = MyViewController()

您正在尝试访问loadView()方法中声明的labelhandleTap()没有可见性/访问label

label声明为类变量。

请参阅此处有关声明和范围的更多信息:https://docs.swift.org/swift-book/referencemanual/declarations.html

最新更新