表视图帮助...... ..从一个表视图中选择的单元格传递到另一个表视图swift

时间:2015-06-30 00:39:53

标签: ios swift uitableview parse-platform

enter image description here

这是一个两部分问题......

  1. 我的问题是....弄清楚如何在第一个表视图中选择单元格...(从解析中pfobjects)保存到数组然后能够填充那些选定的单元格在另一个tableview控制器上....

  2. 如何将第一个表视图的选定单元格存储到另一个表格视图中的一个表格视图单元格中,然后在其上显示一个披露指示符,以便查看所有添加的单元格?对不起,这比更改或添加的具体代码更具概念性...这是我到目前为止所拥有的... 提前感谢朋友们。

    override func tableView(tableView:UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell {
    
        var cell = tableView.dequeueReusableCellWithIdentifier("cell") as! PFTableViewCell!
        if cell == nil {
           cell = PFTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cellIdentifier")
        }
        // Extract values from the PFObject to display in the table cell
    
        if let customerFirstName = object?["customerName"] as? String {
           cell?.textLabel?.text = customerFirstName
        }
    
       if let customerStreetAddress = object?["customerStreetAddress"] as? String {
           cell?.detailTextLabel?.text = customerStreetAddress
       }
    
       if let indexPaths = tableView.indexPathsForSelectedRows() {
          for var i = 0; i < indexPaths.count; ++i {
    
             var thisPath = (indexPaths as! [NSIndexPath])[i]
             var cell = tableView.cellForRowAtIndexPath(thisPath)
             if let cell = cell {
    
               self.addedPoolarray.append(cell)
               // Do something with the cell
              // If it's a custom cell, downcast to the proper type
             }
       }
    }
    
    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "toRoutesVc" {
            let destination = segue.destinationViewController as! UITableViewController
    
        }
     }
    

1 个答案:

答案 0 :(得分:1)

删除这些代码:

if let indexPaths = tableView.indexPathsForSelectedRows() {
   for var i = 0; i < indexPaths.count; ++i {

      var thisPath = (indexPaths as! [NSIndexPath])[i]
      var cell = tableView.cellForRowAtIndexPath(thisPath)
      if let cell = cell {

        self.addedPoolarray.append(cell)
        // Do something with the cell
        // If it's a custom cell, downcast to the proper type
      }
}

这是不正确的。 UITableView重复使用单元格,这意味着将使用不同的PFObject和不同的indexPath再次运行一个单元格。

相反,您可以使用prepareForSegue方法在另一个tableview控制器上填充这些选定的单元格:

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "toRoutesVc" {
        let destination = segue.destinationViewController as! RoutesVC

        let indexPaths = self.tableView.indexPathsForSelectedRows()

        /* 
           If the first table view controller 
           and the another table view controller have the same data source, 
           simply pass the indexPaths 
        */
        // destination.selectedObjects = indexPaths

        /* Or pass the PFObjects: */
        var selectedObjects = [PFObject]()
        for indexPath in indexPaths {
            selectedObjects.append(objects[indexPath.row])
        }
        destination.selectedObjects = selectedObjects
    }
}

您需要使用从第一个表视图接收的数组属性创建自定义控制器(UITableViewController的子类)。

class RoutesVC: UITableViewController {

    var selectedObjects: [AnyObject]?

    ...
}