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

所以这是应该显示名称的视图控制器的代码:

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()中,您将用“(name)”覆盖用户输入vornameLable的内容,因此您现在丢失了用户输入的内容。

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

3)所以1和2一起表示vornameLable不包含任何内容。

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

我认为您需要显示更多代码,这不可能全部解决,如果这样做就什么也不做。

收到信息后更新,其中包含已发布的代码:

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

b)更改vornameLabel.text =“ {name)” tp vornameLabel.text = name

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

d)在viewDidLoad中删除NSUserDefaults.standardUserDefaults()。setObject(name,forKey:“ vorname”)

关于ios - 在NSUserDefaults上没有显示任何文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31079995/

10-16 14:07