好的,我是Swift的新手,我遇到了在URL中传递变量的问题。 我们的想法是单击按钮,传递产品ID,然后在下一个视图控制器上显示与特定产品ID相关的信息。
它不断传递数组中的最后一个id,而不是我点击的那个。
我使用了print(product_id_as)来查看id是否被正确检索,并且没有问题。
我正在使用表视图来显示来自外部数据库的JSON数据。 这是我用来显示数据的代码。
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)
func renewQuestions(sender : UIButton) {
let url = NSURL(string: "http://initiateaustralia.com.au/initiate/vq.php?product=\(product_id_as))")
let data = NSData(contentsOfURL: url!)
values = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSArray
}
return cell;
}
答案 0 :(得分:0)
为按钮提供一个选择器,并将indexPath.row指定为按钮标记。 RenewQuestions将是您按钮的选择器。我们将把它移出并使用标签我们将在按钮点击
上提取数据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
}
现在执行你的segue到下一个视图控件。