2016-12-29 11 views
0

は、以下のコードを確認してください別のビューコントローラにAPIからのデータを渡す機能がsetCustomerValues前に実行される準備し、それはだから、私はStep2ViewController.swiftregistrationToken変数を使用することはできませんなし。スウィフト

答えて

0

SegueをボタンからStep2ViewControllerに接続する代わりに、View Controllerから接続します。このようにすると、ボタンがタッチされたときにセグが自動的に実行されません。

次に、登録トークンを取得した後にsegueを明示的に実行するために、setCustomerValuesコールバックからperformSegueを呼び出します。コールバックがメインスレッドにない場合は、performSegueを呼び出す前にメインスレッドにdispatch_asyncを行う必要があります。

+0

はマイクTaverneの – nouf

0

self.setCustomerValues(response: response)の後にviewcontrollerをプッシュする必要があります。あなたがボタンを押したときにViewControllerをプッシュしないでください。sendActivationCode

+0

はあなたにPhuocLuongありがとうありがとう – nouf

0

この問題を解決する最善の方法は、ボタンから「内部イベントをタッチアップする」ボタンを作成し、ボタンの「アクション」にエッジを作成しないことです。

は、次のコードを使用します。

@IBAction func sendActivationCode(_ sender: UIButton) { 

     service.Register(phoneNumber: self.mobileNumberTxt.text!, callback: { 
     (response) in 

      let vc = self.storyboard?.instantiateViewControllerWithIdentifier("Step2ViewController") as! Step2ViewController 
      vc.registrationToken = (response["token"]! as! String) 
      vc.code = response["code"] as! Int 
      self.navigationController?.pushViewController(vc!, animated: true) 
     }) 
}