2016-11-08 11 views
0

So habe ich ein UItextfield und eine UIButton Ich frage mich, ob es eine Möglichkeit gibt, den Text zu speichern, nachdem die Schaltfläche in einer Instanzvariable gedrückt wird, so dass ich verwenden konnte es in meiner anderen Klasse. Die Sache, die ich versuche zu tun, ist, dass ein Benutzer etwas Text in das Textfeld auf Bildschirm 1 eingegeben hat und wenn der Benutzer dann auf den Knopf klickt, möchte ich ihn zu Bildschirm 2 bringen, aber in der Klasse dieses Bildschirms möchte ich wissen welcher Text Benutzer eingegeben hat, um Daten entsprechend anzuzeigen. Im Moment habe ich nur eine Aktionsfunktion für die Schaltfläche, und ich greife auf den darin enthaltenen Text und speichere ihn in einer Instanzvariablen, aber wenn ich ihn in meiner anderen Klasse anrufe, ist er leer, weil ich ihn als leer initialisiert habe. Kann mir bitte jemand helfen und mir sagen, wie ich das anstellen soll. Danke! HierSwift speichern Text auf eine Instanz/globale Variable, wenn UIButton gedrückt wird

ist der Code für den ersten Bildschirm

var searchRecipe = "" 
@IBAction func SearchButton(sender: UIButton) { 
    if let recipe = RecipeSearchBar.text { 
     searchRecipe = recipe 
    } 
} 

Hier ist der Code für die zweite Bildschirm ist. Ich habe die Taste im ersten Bildschirm dieses Bildschirms angeschlossen, so wenn der Benutzer den Knopf tippt, den er hier bekommt.

var recipeName:[String] = [] 
    var imageURL:[String] = [] 
    var timeInSeconds:[Float] = [] 
    func apiCall() 
    { 
     //search recipe API call 
     var searchRecipe = "" 
     searchRecipe = RecipesViewController().searchRecipe 
     print (searchRecipe) //prints nothing 
     endpoint = "http://api.yummly.com/v1/api/recipes?_app_id=apiId&_app_key=apiKey&q=\(searchRecipe)" //this is where I want to use the searchRecipe text from class 1 
} 
+0

Bitte zeigen Sie etwas Code, zeigen Sie uns, wie Sie Ihre zweite Ansicht erstellen und präsentieren. Außerdem gibt es bereits viele Antworten auf diese Frage, sodass Sie feststellen können, dass Ihre Datei geschlossen wird, sofern sie nicht wesentlich verbessert wird. – Wez

Antwort

0

Nun persönlich würde ich das tun, was (Basierend auf meiner Interpretation Ihrer Ausgabe) folgt:

Bitte beachten Sie, dass ich für selbstverständlich halten Sie einen View-Controller-basierten Navigation implementieren und Sie wissen, was IBOutlets, IBActions & Segues

  1. In der ersten view-Controller erstellen Sie eine IBOutlet sind Eigenschaft von UITextField mit dem Namen RecipeSearchBar und verbinden Sie es mit dem relativen Text Feld.
  2. In der zweiten Ansicht Controller erstellen Sie eine Variable value vom Typ Zeichenfolge;
  3. Ändern der Storyboard segue Identifikator „toSecondViewController
  4. dann in der ersten View-Controller eine IBAction erstellen, um aufgerufen werden, wenn die UIButton gedrückt wird.

In Ihrem Fall:

@IBAction func SearchButton(sender: UIButton) { 
    if let recipe = RecipeSearchBar.text { 
     searchRecipe = recipe 
    } 

    //If you are navigating into a new view view controller 
    //here you need to call self.presentViewController(...) 

} 

Innerhalb dieser Aktion, werden Sie self.presentViewController rufen Sie Ihre zweiten View-Controller angezeigt werden, aber Sie haben einen letzten sehr wichtigen Schritt zu tun : Übergeben Sie den Wert des UITextField an die Instanz , die den zweiten View-Controller enthält.

Um dies zu erreichen, überschreiben Sie prepareForSegue in Ihrem ersten View-Controller und teilen Sie den UITextField-Wert. Diese Methode wird ausgelöst, sobald Sie self.presentViewController für die weitere Implementierung aufgerufen haben.

//Did not tested the code but should just be ok 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     if (segue.identifier == "toSecondViewController") 
     { 
      //Create the instance 
      let secondViewController = segue.destinationViewController 
      //Set the value 
      secondViewController.value = searchRecipe; 
     } 
    } 

Sie sind jetzt gut zu gehen. Hoffe das half, wenn ja, markieren Sie die Frage für andere. Tschüss

+0

Vielen Dank das ist genau das, was ich tun wollte und Ihre Lösung hat sehr gut funktioniert. Schätze deine Hilfe! – smriti

+0

Ich bin froh, dass es hilfreich war, genieße deine Programmierung :) –

Verwandte Themen