Swift 3 Passing Data between view Controllers

user5124826

I am attempting to pass data from one controller to the next. The code is as follows

First view controller:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let parameters: Parameters = [
        "x": 2,
        "y": 2
    ]

    Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON { response in
        if((response.result.value) != nil) {
            let jsonVar: JSON = JSON(response.result.value ?? "success")
            let destViewController : JSONResult = segue.destination as! JSONResult
            let result = "\(jsonVar)"
            destViewController.textLabel = result
            print(result)
            //self.jsonDisplayError.text = "\(jsonVar)"
        } else {
            self.jsonDisplayError.text = "no response"
        }
    }
}

Second view controller:

@IBOutlet var jsonResult: UILabel!

var textLabel = String()

override func viewDidLoad() {
    jsonResult.text = textLabel
}

The result is being printed to the console correctly but it is not displaying in the label on the second view controller page.

Okan Kocyigit

I think the problem is sending data in async callback, you've two options here,

First Solution

Pass parameters to secondviewcontroller and make your API request on secondviewcontroller's viewdidload event.

class FirstViewController: UIViewController {
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let parameters: Parameters = [
            "x": 2,
            "y": 2
        ]
        destViewController.parametrs = parameters
    }
}

And secondviewcontroller,

class SecondViewController: UIViewController {
    @IBOutlet var jsonResult: UILabel!

    var parameters: Parameters

    override func viewDidLoad() {
        Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON { response in
            if((response.result.value) != nil) {
                let jsonVar: JSON = JSON(response.result.value ?? "success")
                jsonResult.text = result
            } else {
                self.jsonDisplayError.text = "no response"
            }
        }
    }
}

Second Solution

Create a seque between two viewcontroller (not button click etc.), and performSegue manually when your async callback completed,

class FirstViewController: UIViewController {
    var result = ""
    @IBAction func buttonClick(sender: UIButton) {
        let parameters: Parameters = [
            "x": 2,
            "y": 2
        ]

        Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON { response in
            if((response.result.value) != nil) {
                let jsonVar: JSON = JSON(response.result.value ?? "success")
                self.result = "\(jsonVar)"
                self.performSegue(withIdentifier: "yourSegueIdentifier", sender: nil)
            } else {
                self.jsonDisplayError.text = "no response"
            }
        }
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let destViewController : JSONResult = segue.destination as! JSONResult
        destViewController.textLabel = self.result
    }
}

Second view controller:

class SecondViewController: UIViewController {
    @IBOutlet var jsonResult: UILabel!

    var textLabel = String()

    override func viewDidLoad() {
        jsonResult.text = textLabel
    }
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Passing Data between View Controllers in Swift

From Dev

Passing data between 2 view controllers in Swift

From Dev

IOS Swift - Passing data between view controllers using container view

From Java

Passing Data between View Controllers

From Dev

iOS/Swift 3: Passing data backwards between non consecutive View Controllers

From Dev

Passing Data in Swift Between View Controllers in Same File

From Dev

Passing data between View Controllers in Swift (From TableView to DetailViewController)

From Dev

Passing data between View Controllers in Swift (From TableView to DetailViewController)

From Dev

Passing Data Between Controllers in Swift

From Dev

Passing object between view controllers in Swift

From Dev

Swift - Passing boolean between view controllers

From Dev

Passing data between View Controllers using Segue

From Dev

Data passing between view controllers not working

From Dev

Passing data between several view controllers

From Dev

Discrepancy passing data between view controllers

From Dev

Passing Data between View Controllers without segue

From Dev

Passing data between view in swift

From Dev

Passing simple variable data (updating labels) in Swift between tabbed view controllers

From Dev

Passing blocks between view controllers

From Dev

Constantly passing data between two view controllers iOS

From Dev

Passing Data through View Controllers with Swift without Using Storyboard

From Dev

Passing data between Tab Bar Controllers with NSNotificationCenter in Swift

From Dev

How do I send data between multiple view controllers swift 3

From Dev

Passing data between controllers with a service

From Dev

angularjs - passing data between controllers

From Dev

Passing data between controllers in AngularJs

From Dev

Pass data between view controllers constantly without a segue? USING SWIFT

From Dev

Passing row selection between view controllers

From Dev

Passing integer values between view controllers

Related Related

  1. 1

    Passing Data between View Controllers in Swift

  2. 2

    Passing data between 2 view controllers in Swift

  3. 3

    IOS Swift - Passing data between view controllers using container view

  4. 4

    Passing Data between View Controllers

  5. 5

    iOS/Swift 3: Passing data backwards between non consecutive View Controllers

  6. 6

    Passing Data in Swift Between View Controllers in Same File

  7. 7

    Passing data between View Controllers in Swift (From TableView to DetailViewController)

  8. 8

    Passing data between View Controllers in Swift (From TableView to DetailViewController)

  9. 9

    Passing Data Between Controllers in Swift

  10. 10

    Passing object between view controllers in Swift

  11. 11

    Swift - Passing boolean between view controllers

  12. 12

    Passing data between View Controllers using Segue

  13. 13

    Data passing between view controllers not working

  14. 14

    Passing data between several view controllers

  15. 15

    Discrepancy passing data between view controllers

  16. 16

    Passing Data between View Controllers without segue

  17. 17

    Passing data between view in swift

  18. 18

    Passing simple variable data (updating labels) in Swift between tabbed view controllers

  19. 19

    Passing blocks between view controllers

  20. 20

    Constantly passing data between two view controllers iOS

  21. 21

    Passing Data through View Controllers with Swift without Using Storyboard

  22. 22

    Passing data between Tab Bar Controllers with NSNotificationCenter in Swift

  23. 23

    How do I send data between multiple view controllers swift 3

  24. 24

    Passing data between controllers with a service

  25. 25

    angularjs - passing data between controllers

  26. 26

    Passing data between controllers in AngularJs

  27. 27

    Pass data between view controllers constantly without a segue? USING SWIFT

  28. 28

    Passing row selection between view controllers

  29. 29

    Passing integer values between view controllers

HotTag

Archive