我的代码有问题。我想通过点击UI按钮来更改UILabel的文本。但是我得到错误"使用未解析的标识符"在我的代码的最后一行(newLabel.latex =" \(nummer)\\ cdot a")。我怎么解决这个问题 ? 这是代码
import UIKit
import iosMath
class ViewController: UIViewController {
@IBOutlet weak var eingabeField: UITextField!
let rect = CGRect(origin: CGPoint(x:115, y:235),
size:CGSize(width:200, height:100))
override func viewDidLoad() {
super.viewDidLoad()
print(iosMathVersionNumber)
let newLabel = MTMathUILabel(frame: rect)
newLabel.latex = " "
self.view.addSubview(newLabel)
}
@IBAction func berechnen(sender: UIButton) {
guard let number = eingabeField.text else {
return
}
guard let nummer = Int(number) else {
return
}
newLabel.latex = "\(nummer) \\cdot a "
}
提前致谢!
答案 0 :(得分:0)
您的常量newLabel
是方法viewDidLoad()
的本地变量。
退出该方法后,该变量不再存在。它用于引用的子视图仍然是主视图的子视图(因为您在其上调用了addSubview(:)
),但是引用丢失了。
因此,标识符 newLabel 在无关的函数/控制动作berechnen(sender:)
中没有任何意义。在您的程序中,常量newLabel: MTMathUILabel
的范围仅限于定义它的方法的主体:viewDidLoad()
。
解决方案:您必须创建一个存储的属性并在那里保留对您的标签的引用:
var mathLabel: MTMathUILabel!
// ...
viewDidLoad() {
super.viewDidLoad()
print(iosMathVersionNumber)
self.mathLabel = MTMathUILabel(frame: rect)
self.mathLabel.latex = " "
self.view.addSubview(self.mathLabel)
}
@IBAction func berechnen(sender: UIButton) {
guard let number = eingabeField.text else {
return
}
guard let nummer = Int(number) else {
return
}
self.mathLabel.latex = "\(nummer) \\cdot a "
}
(使用self.mathLabel
代替mathLabel
进行强调)