UILabel 未更新以匹配 UILabel.text

UILabel Not Updating to match UILabel.text

当我更改 UILabel 的文本属性时,它只会在应用程序中部分更新。

我试过将它放在 viewDidLoad 函数和单独的专用函数中,但无济于事。如果我在更新后将 Label.text 打印到控制台,它是正确的,但它没有正确显示在屏幕上。

有问题的class:

@IBOutlet weak var PromptLabel: UILabel!
var labelText = "";

override func viewDidLoad() {
    super.viewDidLoad()
    print("view loaded")
    self.PromptLabel.text = "Tell Us... " + labelText;
    // Do any additional setup after loading the view.
}

呼叫者:

 @IBAction func UsingButtonPressed(_ sender: Any) {
    (sender as AnyObject).setTitleColor(UIColor.red, for: .normal)
    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil);
    let secondController = storyBoard.instantiateViewController(withIdentifier: "Secondary View Controller") as! SecondaryViewController;
    secondController.labelText = "What You're Using Today"
    self.present(secondController, animated: true, completion: nil)

}

标签应显示为 "Tell Us... What You're Using Today",但它只显示 "Tell U...",这没有任何意义。

您需要确保 UILabel 的宽度约束足够宽以容纳文本。否则,它正在被截断,您看到的 ... 是因为标签的换行符设置为 truncating tail,这意味着字符串的结尾将被替换为 ... 当标签太窄了。

所以这是一个界面生成器问题,而不是 Swift 特定的问题。标签的文本正在正确更新,UI 只是无法正确显示它。

如果您希望标签的宽度约束随文本而变化,可以通过多种方式计算文本的宽度并更新约束的常量以适应该文本的宽度。