如何在Swift中更改UILabel的文本属性?

问题描述 投票:0回答:1

我已经以编程方式设置了UILabel,并且尝试通过稍后在ViewController中调用的函数来更改text属性,但是当该函数被称为questionLabel.text时,其默认值为“ Welcome”。

基本上,我想完成的是:

  func changeLabelText() {
            questionLabel.text = "New label text"
            print(questionLabel.text!)
        }
        changeLabelText()

        // prints "New label text"

但是我实际上得到的是:

   func changeLabelText() {
            questionLabel.text = "New label text"
            print(questionLabel.text!)
        }
        changeLabelText()

        // prints "Welcome"

这是我设置标签的方式:

class ViewController: UIViewController, AVCaptureVideoDataOutputSampleBufferDelegate {

    @IBOutlet var cameraView: UIView!

        var questionLabel: UILabel {

            let label = UILabel()
            label.lineBreakMode = .byWordWrapping
            label.backgroundColor = .white
            label.textColor = .black
            label.text = "Welcome"
            label.textAlignment = .center
            label.frame = CGRect(x: 65, y: 100, width: 300, height: 65)

            return label

        } 

有什么建议吗?非常感谢!

ios swift xcode uilabel viewcontroller
1个回答
0
投票
当前

var questionLabel: UILabel { let label = UILabel() label.lineBreakMode = .byWordWrapping label.backgroundColor = .white label.textColor = .black label.text = "Welcome" label.textAlignment = .center label.frame = CGRect(x: 65, y: 100, width: 300, height: 65) return label }

是计算属性,因此每次访问都需要一个新的单独实例

var questionLabel: UILabel = { let label = UILabel() label.lineBreakMode = .byWordWrapping label.backgroundColor = .white label.textColor = .black label.text = "Welcome" label.textAlignment = .center label.frame = CGRect(x: 65, y: 100, width: 300, height: 65) return label }()

© www.soinside.com 2019 - 2024. All rights reserved.