2017-07-31 3 views
0

Alamofireリクエストのデータを1つのViewControllerから渡す必要があり、次のView ControllerのUIlabelsに送信する必要があります。私はそのView Controllerにまだ移行したくありません。しかし、宛先View Controllerは、Alamofireリクエストからデータを読み込んで使用できる必要があります。私はセグーでそれを試しましたが、私はそれを働かせることはできません。そして、これが正しい方法であるかどうか疑問に思っています。Swift 3:移動しないで次のView Controllerにデータを渡す必要があります

これは私が持っているものです。

Alamofire.request(URL_SCAN_ID, method: .post, parameters: ScanParameters, encoding: JSONEncoding.default) .responseJSON 
       { 

        response in 

        //printing response 
        print(response.request!) 
        print(response.response!) 
        print(response.data!) 
        print(response.result) 
        print(response.error) 

        //getting the json value from the server 
        let value = response.result.value 
        print(value!) 
        let json = JSON(value!) 

        let productdesc0:JSON = json["productdesc"] 
        let productdescString = productdesc0.string 



        self.performSegue(withIdentifier: "ScanInfo", sender: productdescString) 


        func prepareForSegue(segue: UIStoryboardSegue, sender: Any){ 
        if (segue.identifier == "ScanInfo"){ 
         let destinationVC = segue.destination as! ScanInfoViewController 
         destinationVC.productdescription01 = productdescString! 
         print("oeiii",sender) 
        } 


      } 

私はデータもセグエに送信されていないと思う...印刷は何も表示されません。

+0

正しい方法ではありません。まず、ビューコントローラからネットワークメソッドを呼び出さないでください。第二に、performSegueはあなたが望まない移行を開始する必要があります。第3に、prepareForSegueはViewControllerになければならず、 "override"でマークする必要があります。そのメソッドにブレークポイントを設定した場合、呼び出されていないとみなされます。 – pbergson

答えて

0

コード準備機能では、クロージャの内側にあります。ファイルレベルでなければなりません。指定されたコードがビューコントローラから来た場合、それは同じようにする必要があります -

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if (segue.identifier == "ScanInfo"){ 
     let destinationVC = segue.destination as! ScanInfoViewController 
     destinationVC.productdescription01 = productdescString! 
     print("oeiii",sender) 
    } 
} 
+0

ありがとう!私もそれを試してみました。問題は、関数内で使用されているので、productdescStringを使用できないことです。 –

+0

それから、それを記録する必要があります。クラスプロパティを使用します。他のスコープ内で関数を準備することはできません。それはクラスレベルで利用可能でなければならず、オーバーライドする必要があります。 – Avi

+0

私はそれを調整しました、私は小さな調整をしました: –

関連する問題