2016-11-08 6 views
0

私はUItextfieldとUIButtonを持っていますので、ボタンをインスタンス変数に押し込んだ後にテキストを保存する方法があるかと思いましたそれは私の他のクラスです。 私がしようとしているのは、ユーザーが画面1のテキストフィールドにテキストを入力してから、ユーザーがボタンをタップすると、画面2の画面に移動したいのですが、画面2のクラスで知りたいそれに応じてデータを表示するためにユーザが入力したテキスト。 今私はボタンのアクション関数を持っていて、その中のテキストにアクセスしてそれをインスタンス変数に保存しますが、他のクラスで呼び出すと空に初期化されているため空です。だから、誰かが私を助けて、これについてどうやって行くのか教えてください。 ありがとう!ここUIButtonが押されたときにテキストをインスタンス変数/グローバル変数に保存する

は、最初の画面のコード

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

ここでは、第2のスクリーンのためのコードです。私はこの画面の最初の画面でボタンを接続しているので、ユーザーがボタンをタップするとここに着きます。

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

いくつかのコードを表示して、2番目のビューの作成方法とプレゼンテーション方法を教えてください。また、この質問にはすでにたくさんの回答がありますので、あなたが改善されない限り、あなたは閉鎖されているかもしれません。 – Wez

答えて

0

まあ、個人的に私は(あなたの問題の私の解釈に基づいて)次の何だろう:

ビュー・コントローラ・ベースのナビゲーションを実装している当たり前の私が取ることに注意してくださいとあなたはIBOutlets、IBActions & SeguesはIBOutletを作成するには、最初のビューコントローラで

  1. 何であるかを知っていますプロパティ UITextField RecipeSearchBarとし、それを相対テキスト フィールドに接続します。
  2. 2番目のビューコントローラーで、 文字列の変数valueを作成します。
  3. 変更ストーリーボードセグエ識別子「toSecondViewController
  4. に続いて最初のビューコントローラ内UIButtonが押されたときに 呼び出されるIBActionを作成します。あなたのケースでは

:このアクションインサイド

@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(...) 

} 

は、あなたの第2のビューコントローラを表示するには、self.presentViewController を呼び出すために行くされていますが、最後の一の 非常に重要なステップを行う必要があります:UITextFieldの値を、2番目のビューコントローラを保持するインスタンス に渡す

これを実現するには、最初のビューコントローラをオーバーライドして を割り当て、UITextField値を共有します。このメソッドは、後で実装するためにself.presentViewControllerを呼び出すとトリガーされます。

//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; 
     } 
    } 

あなたは今すぐ行きたいです。 これが役に立ったら、ほかの人に質問をしてください。 Bye

+0

これはまさに私がやりたいことであり、あなたのソリューションはとてもうまく機能してくれてありがとうございます。あなたの助けに感謝! – smriti

+0

うれしかったです、あなたのコーディングを楽しむ:) –

関連する問題