Ios 默认情况下不显示文本

Ios 默认情况下不显示文本,ios,swift,xcode6,Ios,Swift,Xcode6,我有两个视图控制器,我想存储在第二个视图控制器中输入的“名称”,并在第一个视图控制器中显示。我已经实现了存储值的功能,现在我想存储用户输入的名称 下面是视图控制器的代码,其中应显示名称: import UIKit var name = [String]() class profile: UIViewController { //Name @IBOutlet weak var nameTextField: UILabel! var vornameLabel = String() over

我有两个视图控制器,我想存储在第二个视图控制器中输入的“名称”,并在第一个视图控制器中显示。我已经实现了存储值的功能,现在我想存储用户输入的名称

下面是视图控制器的代码,其中应显示名称:

import UIKit

var name = [String]()

class profile: UIViewController {

//Name
@IBOutlet weak var nameTextField: UILabel!

var vornameLabel = String()

override func viewDidLoad() {

    super.viewDidLoad()

    //Name
    nameTextField.text = "\(name)"

    //Vorname speichern
    NSUserDefaults.standardUserDefaults().setObject(name, forKey: "vorname")

    name = NSUserDefaults.standardUserDefaults().objectForKey("vorname") as! [String]

}
这是输入“名称”的第二视图控制器的代码:

import UIKit

class profileSettings: UIViewController {

    @IBOutlet weak var vornameLabel: UITextField!
    @IBOutlet weak var nachnameLabel: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func addInformation(sender: AnyObject) {

        vornameLabel.text = "\(name)"

        NSUserDefaults.standardUserDefaults().setObject(name, forKey: "vorname")

    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        //in Profil
        var destProfile:profile = segue.destinationViewController as! profile

        destProfile.vornameLabel = vornameLabel.text
        destProfile.nachnameLabel = nachnameLabel.text

    }

}
1) 如果用户正在输入他们的名称,并且该名称将成功进入vornameLabel,那么在addInformation()中,您将用“(名称)”覆盖用户在vornameLabel中输入的内容,因此您现在已丢失用户输入的内容

2) 名称未设置为任何值(除非您在代码的另一部分中有未显示的名称)

3) 所以1和2加在一起意味着vornameable不包含任何内容

4) 即使vornameLable确实包含某些内容,但在viewDidLoad()中调用的是setObject,它将用名称中的任何内容覆盖存储到NSUserDefaults的任何值

我认为您需要显示更多的代码,这不可能是全部。如果是,那么它什么也不做

收到信息后更新发布的代码为所有信息:

a) 名称不包含任何内容,因此您不会将任何内容保存为默认值。将其更改为var name=“我的名字”

b) 更改vornameLabel.text=“(名称)”tp vornameLabel.text=名称

c) 将NSUserDefaults.standardUserDefaults().setObject(名称,forKey:“vorname”)更改为NSUserDefaults.standardUserDefaults().setObject(vornameLable.text,forKey:“vorname”)


d) 删除viewDidLoad中的NSUserDefaults.standardUserDefaults().setObject(名称,forKey:“vorname”)

是的,在ViewWillDisplay中设置值:

override func viewWillAppear(animated: Bool)
{
    super.viewWillAppear(animated)

    name = NSUserDefaults.standardUserDefaults().objectForKey("vorname") as! [String]
    nameTextField.text = "\(name)"
}

实际上,这是这两个视图控制器的全部功能。嗯,我只是在我的应用程序的开始,并认为这是一个重要的部分,所以我想先这样做,我已经更新了答案。我知道你是新来的,但你期望发生什么?名称不包含任何内容,它是空的,它不包含任何内容,因此没有任何内容可存储。到目前为止,一切正常!但当再次打开应用程序时,它不会更新,在启动应用程序时仍会输入该值,但不会显示该值。在存储该值时,请尝试调用默认值上的synchronize()。如果它不起作用,那么发布一个新问题,并用所有新代码描述新问题。同步没有帮助。ViewDidDisplay或ViewWillDisplay是否有帮助?