dimanche 28 juin 2015

UILabel doesn't update immediately after setting value in NSUserDefaults

I have two view controllers, of which one is for entering a value that is stored in NSUserDefaults, the other one contains a label that shows this value. The value is NOT shown immediately after setting the value in the first view controller, but it gets stored in NSUserDefaults. If I open the view controller again via my sidebar, the value is shown. I need the view to update immediately.

This is the code of my first view controller:

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 saveInformation(sender: AnyObject) {

    NSUserDefaults().setObject(vornameLabel.text, forKey: "vorname")
    NSUserDefaults().setObject(nachnameLabel.text, forKey: "nachname")

}

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

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

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

} 
}

This is the code for my second view controller:

import UIKit

var vorname = ""
var nachname = ""

class profile: UIViewController, SideBarDelegate {

var sideBar:SideBar = SideBar()

var vornameLabel = String()
var nachnameLabel = String()

//Name
@IBOutlet weak var nameTextField: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    // SideBar
    sideBar = SideBar(sourceView: self.view, menuItems: ["1", "2", "3", "4", "5"])
    sideBar.delegate = self

    //Name anzeigen
    vorname = NSUserDefaults().stringForKey("vorname") ?? ""
    NSUserDefaults.standardUserDefaults().setObject(vorname, forKey: "vorname")

    nachname = NSUserDefaults().stringForKey("nachname") ?? ""
    NSUserDefaults.standardUserDefaults().setObject(nachname, forKey: "nachname")

    //Name
    nameTextField.text = vorname + " " + nachname

}

Aucun commentaire:

Enregistrer un commentaire