使用 swift 2 在 tableview 上处理单元格

Posted

技术标签:

【中文标题】使用 swift 2 在 tableview 上处理单元格【英文标题】:working with cell on tableview using swift 2 【发布时间】:2016-11-22 07:37:52 【问题描述】:

我正在使用 Swift 2 开发应用程序。在我的应用程序中,我将 JSON 数据解析为表格视图。当我点击一个单元格时,它成功移动到另一个视图控制器,但我无法获取 json 数据。

这是我的视图控制器中的代码:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
    var cell = self.TableView.dequeueReusableCellWithIdentifier("Cell",forIndexPath: indexPath) as! CustomTableCell
    let strbookdetail : NSString=arrDict[indexPath.row] .valueForKey("booking_detail") as! NSString
    let strdrop : NSString=arrDict[indexPath.row] .valueForKey("drop_address") as! NSString
    cell.Bookdetail.text=strbookdetail as String
    cell.Dropaddress.text=strdrop as String
    return cell as CustomTableCell



//It helps to parse JSON  data to table view.

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    TableView.deselectRowAtIndexPath(indexPath, animated: true)
    let tripcontroller = self.storyboard?.instantiateViewControllerWithIdentifier("UpcomingController") as! Secondcontroller
    navigationController?.pushViewController(tripcontroller, animated: true)


当点击单元格时,它有助于移动到其他视图控制器SecondController

在我的SecondController 中有两个UILabels。在这些标签中,我想显示数据,即 strbookdetailstrdrop

如何在两个视图控制器之间传递引用?

【问题讨论】:

文档中的 This topic 可能会对您有所帮助 你是不是推送VC成功了,但是你没有写传数据的代码 我已经通过情节提要提供连接一切正常,但在我的表格视图中有单元格..每个单元格都有不同的数据,所以如果我点击特定单元格,它应该根据它们的单元格获取数据 是的@Anbu.Karthik....我没有编写代码来传递数据 【参考方案1】:

使用property传递数据很容易做到:

在第二个vc:

var dataFromBeforeVC:[String:String] = [String:String]()

override func viewDidLoad() 
    super.viewDidLoad()


    initData ()



func initData()  

    // set data  strbookdetail and strdrop to labelOne & labelTwo

    labelOne.text = dataFromBeforeVC["strdrop"]
    labelTwo.text = dataFromBeforeVC["strbookdetail"]



在第 1 个vc:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 

    TableView.deselectRowAtIndexPath(indexPath, animated: true)
    let tripcontroller = self.storyboard?.instantiateViewControllerWithIdentifier("UpcomingController") as! Secondcontroller

    let cell:UITableViewCell = tableView.cellForRow(at: indexPath as IndexPath)!

    let strbookdetail : NSString=arrDict[indexPath.row] .valueForKey("booking_detail") as! NSString
    let strdrop : NSString=arrDict[indexPath.row] .valueForKey("drop_address") as! NSString
    tripcontroller.dataFromBeforeVC = [
        "strdrop":strbookdetail,
        "strdrop":strbookdetail
    ]

    self.navigationController?.pushViewController(tripcontroller, animated: true)

【讨论】:

我为第二个控制器中的标签框创建了插座...我如何在我的第二个控制器 viewdidload 方法中引用它 不要直接从第一个视图控制器设置标签,传递数据并在viewWillAppear等函数中使用它来更新标签。我还建议您创建一个 Struct 来保存解析的 JSON 数据,而不是一直索引到字典中。你也应该使用String 而不是NSString @raj kumar 查看我的编辑答案!

以上是关于使用 swift 2 在 tableview 上处理单元格的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 2 中使用 TableView 项目访问视图控制器?

如何在 Swift 2.0 中的 TableView 中获取选中标记的项目

TableView 使用 Swift 3 展开/折叠

无法在 Swift 2 中将 TableView @IBOutlet 连接到 ViewController

在 swift 2.2 中处理 Tableview 中的开关

如何在 Swift 2 中从 JSON 填充我的 tableView?