2016-05-02 24 views
0

Ok, ich bin neu in Swift, und ich habe ein Problem mit der Übergabe einer Variablen in der URL. Die Idee besteht darin, auf die Schaltfläche zu klicken, die Produkt-ID zu übergeben und auf dem nächsten View-Controller die Informationen zu der jeweiligen Produkt-ID anzuzeigen.Swift nicht den richtigen Variablenwert

Es passiert weiterhin die letzte ID im Array, nicht die, auf die ich geklickt habe.

Ich habe print (product_id_as) verwendet, um zu sehen, ob die IDs korrekt abgerufen werden, und es gibt kein Problem dort.

Ich verwende eine Tabellenansicht, um JSON-Daten von einer externen Datenbank anzuzeigen. Dies ist der Code, den ich verwende, um die Daten anzuzeigen.

+1

Warum gibt es eine unbenutzte Funktion in Ihrer Funktion? – Moritz

+1

product_id und product_id_as scheinen Variablen zu sein, die außerhalb dieser Methode in Ihrer Klasse deklariert sind. Also, vielleicht werden sie durch andere Methoden modifiziert. Versuchen Sie, sie lokal innerhalb der Methode zu deklarieren und sehen Sie, ob sich etwas ändert. – Gustanas

+0

Wie navigieren Sie zur nächsten VC? Posten Sie diesen Code auch. und was das RenewQuestions Func tun innerhalb von CellForRow ... –

Antwort

0

Stellen Sie eine Auswahl für Ihre Schaltfläche bereit und weisen Sie indexPath.row als Schaltflächen-Tag zu. RenewQuestions wird der Selektor Ihrer Schaltfläche sein. Wir werden, dass und unter Verwendung Tag bewegen wir die Daten über Taste

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! SpecialCell 
let maindata = values[indexPath.row] 
cell.product.text = maindata["product"] as? String 
product_id = (maindata["id"] as? String)! 
product_id_as = Int(product_id)! 
buttonTitle = (maindata["product_id"] as? String)! 
cell.testButton.setTitle(buttonTitle, forState: .Normal) 
cell.testButton.addTarget(self, action:#selector(ViewController.renewQuestions(_:)), forControlEvents:UIControlEvents.TouchUpInside) 
cell.testButton.tag = indexPath.row 
return cell; 
} 


func renewQuestions(sender : UIButton) { 
let selectedItem = sender.tag 
let selectedData = values[selectedItem] 
let selectedProduct_id = (selectedData["id"] as? String)! 
let selectedProduct_id_as = Int(selectedProduct_id)! 
let url = NSURL(string: "http://initiateaustralia.com.au/initiate/vq.php?product=\(selectedProduct_id_as))") 
let data = NSData(contentsOfURL: url!) values = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSArray 
} 
klicken extrahieren

nun Ihre segue zum nächsten Ansichtssteuerung auszuführen.

Verwandte Themen