Обновить данные UILabel после обновления Json swift 4 - PullRequest
0 голосов
/ 27 августа 2018

Здравствуйте. У меня проблема с обновлением полей UILabel после обновления json. Файл json обновляется в API успешно, но UILabel отсутствует, когда я нажимаю эту кнопку для перенаправления. вот мой код

@IBAction func saveButton(_ sender: AnyObject) {

        //API Update profile and Bearer token
        let token = HPWSLoginManager.shared().saveSuccessResponse.token
        let url = URL(string: "http://51.38.36.76:40/api/v1/updateProfile")
        var request = URLRequest(url: url!)
        request.httpMethod = "PUT"
        request.addValue("Bearer \(token!)", forHTTPHeaderField: "Authorization")
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")

        var userNumberTmp: String?
        var userFirstName: String?
        var userLastName: String?
        var userNumber: String?

        // set new values user
        userNumberTmp = self.number.text
        userFirstName = self.firstNameTextfield.text
        userLastName = self.lastNameTextfield.text
        userNumber = userNumberTmp?.replacingOccurrences(of: " ", with: "")

        let json: [String: Any] = ["usernumber": userNumber!,
                                   "firstname": userFirstName!,
                                   "lastname": userLastName!
        ]
        let jsonData = try? JSONSerialization.data(withJSONObject: json)
        request.httpBody = jsonData

        let task = URLSession.shared.dataTask(with: request) { data, response, error in
            guard let data = data, error == nil else {
                print(error?.localizedDescription ?? "No data")
                return
            }
            let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
            if let responseJSON = responseJSON as? [String: Any] {
                print(responseJSON)

                DispatchQueue.main.async {
                    let alert = UIAlertController(title: "Success", message: "edit Successful!", preferredStyle: .alert)
                    let action = UIAlertAction(title: "OK", style: .default) { (action) in

                   self.performSegue(withIdentifier: "MyInformation", sender: self)

                        // refresh UILabel ???????????????????

                    }

                    alert.addAction(action)
                    self.present(alert, animated: true, completion: nil)
            }
        }
    }

    task.resume()
}

Я перенаправляю страницу, но не знаю, как обновить данные (в UILabel) при перенаправлении, пожалуйста, помогите мне

Ответы [ 2 ]

0 голосов
/ 27 августа 2018
 DispatchQueue.main.async {
                    let alert = UIAlertController(title: "Success", message: "edit Successful!", preferredStyle: .alert)
                    let action = UIAlertAction(title: "OK", style: .default) { (action) in

                   self.performSegue(withIdentifier: "MyInformation", sender: self)

                        // refresh UILabel ???????????????????

lblName.text = //Enter your label value here

                    }
0 голосов
/ 27 августа 2018

Попробуй это. Вам необходимо передать данные в nextViewController, как показано ниже

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "MyInformation") {
        let vc = segue.destination as! NextViewController
        vc.dataProroprty = "Your Data" // your json data
    }
}

В следующем видеКонтроллер

var dataProperty = ""

  override func viewDidLoad() {
        super.viewDidLoad()
        self.lbl.text = dataProperty
    }
...