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是否有帮助?