快速更改MTMathUILabel的文本

时间:2017-08-28 09:41:54

标签: ios swift uilabel

我的代码有问题。我想通过点击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 "
    }

提前致谢!

1 个答案:

答案 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进行强调)