如何从数组中只传递一个键值对?

时间:2017-07-20 11:09:23

标签: ios swift uitableview

以下是我的json回复......

{"Doctor":[{"doctorname":"ANBU SURESH RAO, D.ORTHO., MSORTHO.,","presid":"1008"}]}

以下是我的viewcontroller代码.......

let parameters: Parameters=["hnum":hnum!]
    Alamofire.request(URL_USER_LOGIN, method: .post, parameters: parameters).responseJSON
        {
            response in
            let result = response.result
            if let dict = result.value as? Dictionary<String,AnyObject>{
                if let innerDict = dict["Doctor"]{
                    self.namesarray = innerDict as! [AnyObject]
                    self.jsontable.reloadData()

                }
            }

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return namesarray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? CustomTableViewCell
   let name = namesarray[indexPath.row]["doctorname"]

    cell?.lbldocname.text = name as? String
    flag = !flag
    flagcheck()
    return cell!
}

这个视图控制器只加载我的医生名字,所以当我点击医生名字时,我希望只将presid传递给下一个视图控制器....我尝试使用prepareForSegue它没有工作....任何想法????

2 个答案:

答案 0 :(得分:0)

声明一个全局变量selectedPresId。实现didSelectRowAtIndexPath方法,并在该方法中设置该全局变量

中的pres id
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

selectedPresId = namesarray[indexPath.row]["presid"]
 self.performSegue(withIdentifier: "detailSegue", sender: self)

}

在prepareForSegue中执行此操作

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "detailSegue" {
    let vc = segue.destination as! ViewController
    vc.selectedPresId = selectedPresId
}

在第二个视图控制器中创建一个名为selectedPresId的属性,以便您可以在上面的行中设置它vc.selectedPresId

答案 1 :(得分:0)

tableView:didSelectRowAtIndexPath:

告诉委托者现在选择了指定的行。使用indexPath在tableView中找到新选定的行。

查看我之前的SO ans了解详情。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
      let pressId = namesarray[indexPath.row]["presid"]

      if let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SecondViewController ") as? SecondViewController {
           viewController.pressId= pressId
           if let navigator = navigationController {
                navigator.pushViewController(viewController, animated: true)
      }
   }
}

在SecondViewController中声明一个全局变量pressId,以便您可以从当前的控制器类访问它。