swift,标签中的文本不';不在ViewDidDisplay()中更改

swift,标签中的文本不';不在ViewDidDisplay()中更改,swift,Swift,我不熟悉IOS开发,但我正在编写一个应用程序,用户可以从tableView(视图1)中选择一行。用户选择的文本随后显示在同一屏幕上的标签中。当用户按下按钮时,标签中的文本存储在UserDefaults中,视图更改为view 2。这里我有一个viewDidAspect()方法,它从UserDefaults中获取字符串,并更改视图2上另一个标签的文本 下面是视图1的代码。单击按钮时调用的函数称为schoolChosenClicked(): 下面是视图2的代码 import UIKit class

我不熟悉IOS开发,但我正在编写一个应用程序,用户可以从tableView(视图1)中选择一行。用户选择的文本随后显示在同一屏幕上的标签中。当用户按下按钮时,标签中的文本存储在UserDefaults中,视图更改为view 2。这里我有一个viewDidAspect()方法,它从UserDefaults中获取字符串,并更改视图2上另一个标签的文本

下面是视图1的代码。单击按钮时调用的函数称为schoolChosenClicked():

下面是视图2的代码

import UIKit

class Login: UIViewController {
    @IBOutlet weak var LabelWelcome: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func viewDidAppear(_ animated: Bool) {
        if  var schoolname = UserDefaults.standard.object(forKey: "chosenSchool") as? String
        {
            print("Das ist der Schoolname:" + schoolname+".")
            LabelWelcome.text = "Willkommen bei deiner \(schoolname) App"

        }
    }


}

在第二张图片中,您可以看到标签上写着“名称Anmelden”。这篇文章实际上必须改为“Willkommen bei deiner(学名)应用程序”,但事实并非如此,或者在很长一段时间之后

值schoolname很好地存在,print语句工作正常,但LabelWelcome.text=。。。不起作用或需要很长时间。如果我尝试在viewDidLoad()方法中设置文本,效果会很好

你知道为什么吗?或者我可以调用一种方法来更新屏幕吗

谢谢,

曼努埃尔

附言:


您需要选择
表格单元格
,或者在单击
按钮时需要添加文本

@IBAction func schoolChosenClicked(_ sender: Any) {
        LabelSchoolName.text = SchoolNames[indexPath.row]
        UserDefaults.standard.set(LabelSchoolName.text, forKey: "chosenSchool")

    }
在这之后,您仍然会遇到问题,然后在
userdefault
中添加文本时添加
synchronize
(不建议这样做):


您确定每个IBOutlet和IBAction都已正确连接吗?能否共享调试程序日志?打印(“学校名称:“+Schoolname+”)在debuder中打印或not@Marco选择“是”,因为当我尝试在viewDidLoad()函数中设置文本时,它会起作用。请确保您具有LabelSchoolName.text的值,同时在检索该值而不是将其转换为字符串时,您可以直接获取字符串而不是对象。@Anuraj问题不在于:UserDefaults中的值,而是第二个视图中的标签仍然显示默认值,即使我检查了调试器,并且标签的“内容”值被设置为正确的新值。“此方法是不必要的,不应使用。”@Jogendar问题不在于:UserDefaults中的值,而是第二个视图中的标签仍然显示默认值,即使我检查了调试器,并且标签的值“content”设置为正确的新值。
@IBAction func schoolChosenClicked(_ sender: Any) {
        LabelSchoolName.text = SchoolNames[indexPath.row]
        UserDefaults.standard.set(LabelSchoolName.text, forKey: "chosenSchool")

    }
UserDefaults.standard.set(LabelSchoolName.text, forKey: "chosenSchool")
UserDefaults.standard.synchronize()