Je dois transmettre des données d'un contrôleur de vue, des données de la requête Alamofire, et les envoyer à UIlabels dans le View Controller suivant. Je ne veux pas passer à ce contrôleur de vue pour le moment. Mais le View Controller de destination doit être capable de lire et d'utiliser les données de la requête Alamofire. Je l'ai essayé avec un segue, mais je n'arrive pas à le faire fonctionner et je doute que ce soit la bonne façon de le faire.Swift 3: Nécessité de transmettre les données au contrôleur de vue suivant sans y accéder
C'est ce que j'ai:
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)
}
}
Je pense que les données sont même pas envoyer au Segue ... l'impression ne montre rien.
Oui, pas la bonne façon de faire les choses. D'abord, n'appelez pas vos méthodes de réseau à partir d'un contrôleur de vue. Deuxièmement, performSegue devrait initier la transition que vous ne voulez pas. Troisièmement, prepareForSegue devrait être dans le ViewController, et devrait être marqué avec "override". Si vous définissez un point d'arrêt dans cette méthode, je suppose qu'il n'est pas appelé. – pbergson