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

标签 ios swift xcode uilabel viewcontroller

我已经以编程方式设置了一个 UILabel,并且尝试通过稍后在 ViewController 中调用的函数来更改文本属性,但是当调用该函数时,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

        } 

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

最佳答案

当前

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 
} 

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

questionLabel.text = "New label text" // instance 1
print(questionLabel.text!)   // instance 2

相反,你需要一个闭包

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 中更改 UILabel 的文本属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59381521/

相关文章:

ios - 删除所有子项

swift - 无法更改选择器 View 中的选定 View

arrays - 部分从另一个数组创建新数组

iphone - Xcode/iOS 代表

ios - 为什么链接对象属性不适用于此查询?

ios - UITableViewCellAccessoryDisclosureIndicator 未显示

Swift - 使用搜索栏后结果出错

ios - 我可以撤销我所有的 ios 证书并获得新证书吗?

ios - iBeacon 协议(protocol)说明

ios - swift 变量前的下划线 "_"是什么意思?