我有两个视图控制器,我想存储在第二个中输入的“名称”,并在第一个中显示。我已经确定存储了一个值,现在我想存储用户输入的名称。
所以这里是视图控制器的代码,其中应显示名称:
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
}
}
答案 0 :(得分:0)
1)如果用户正在输入他们的名字并且成功进入vornameLabel,则在addInformation()中,您将覆盖用户使用“(name)”输入vornameLable的内容,因此您现在已经丢失了用户输入的内容。
2)名称未被设置为任何内容(除非您在代码的另一部分中有未显示的内容)
3)所以1和2在一起意味着vornameLable什么都不包含。
4)即使vornameLable确实包含某些内容,然后在viewDidLoad()中调用setObject,它将覆盖存储到NSUserDefaults中的任何值以及名称中的任何值。
我认为你需要展示更多的代码,这不可能是全部。如果是那么它就没有做任何事情。
收到信息后更新了所发布的代码:
a)名称不包含任何内容,因此您不会将任何内容保存到默认值。将其更改为var 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”)
答案 1 :(得分:0)
是的,请在viewWillAppear中设置您的值:
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
name = NSUserDefaults.standardUserDefaults().objectForKey("vorname") as! [String]
nameTextField.text = "\(name)"
}