2016-05-30 4 views
0

Ich möchte, wenn Benutzer Login in der Login-View-Controller, die E-Mail gespeichert und anzeigen, um Menü Ansicht Controller herausrutschen, aber die Folie heraus Menü wird beim Erstellen und Ausführen zuerst angezeigt. Die Variable enthält also nichts, weil sich der Benutzer noch nicht im Login-View-Controller angemeldet hat.Daten zu einem anderen View-Controller verschieben, aber die 2. Ansicht Controller zuerst vor 1. View-Controller laden

im dies mit dem Text in Textfeld zu erklären, ist E-Mail

let emailFill:String = self.emailTextfield.text! 

und

self.labelContainEmail = emailFill 

die labelContainEmail ist eine globale Variable oben

var labelContainEmail: String = "" 

i‘verwenden füllen m mit Vorbereitung für den Übergang wie folgt Daten zu verschieben

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
{ 
    if segue.identifier == "yolo" 
    { 
     let vc = segue.destinationViewController as! SlideOutMenu 
     vc.labelContainEmail2 = labelContainEmail 
     print(vc.labelContainEmail2) // this don't print anything, but when i print under `self.labelContainEmail = emailFill` it printed out the email 
    } 
} 

im slideOutMenu.swift, ich habe diese var oben

var labelContainEmail2: String = "" 

und versuchen, den Label-Text mit

labelEmail.text = labelContainEmail2 

in der Ansicht zu ändern, haben Last

was soll ich tun? bitte gehen Sie einfach, ich bin neu swift

+1

Ich kann Ihre Frage nicht verstehen! Was willst du genau? – Lion

Antwort

1

für segue speichern E-Mail in NSUserDefaults

NSUserDefaults.standardUserDefaults().setObject(labelContainEmail , forKey: "email") // save user email 

im slideOutMenu.swift mit vorbereiten und versuchen, den Label-Text mit

in der Ansicht tat laden zu ändern
if (NSUserDefaults.standardUserDefaults().objectForKey("email")) == nil 
{ 
    NSUserDefaults.standardUserDefaults().setObject("" , forKey: "email") 
} 
else 
{ 
    let emailStr = NSUserDefaults.standardUserDefaults().objectForKey("email") as! String 
} 
+0

Danke Mann! Du bist toll! –

+0

Ok Immer willkommen –

0

Sie können auf der Oberseite verwenden diese Zeile

** Zweite Ansicht

class SlideOutMenu: UIViewController { 

    var labelContainEmail: String? 

    //your code here 
} 

Wohin Sie von der ersten zur zweiten Ansicht gehen.

** Verwenden First View

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
{ 
    if segue.identifier == "yolo" 
    { 
     let vc = segue.destinationViewController as! SlideOutMenu 
     vc.labelContainEmail2 = labelContainEmail 
     print(vc.labelContainEmail2) // this don't print anything, but when i print under `self.labelContainEmail = emailFill` it printed out the email 
    } 
} 

Ich hoffe, es wird Ihnen helfen, andere weise Sie Model-Klasse auch eine bessere Art und Weise für Pass-Daten verwenden können.

Verwandte Themen