2015-04-15 53 views
1

我在使用RowAction按鈕時將數據傳遞給新視圖控制器以編輯字段時出現問題。滑動到編輯細節Swift和分析

我可以得到RowAction按鈕,通過下面的代碼去新視圖控制器:

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? { 

    var editAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: " Edit " , handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in 

     dispatch_async(dispatch_get_main_queue()) { 
      self.performSegueWithIdentifier("EditDetails", sender: self) 
     } 
    }) 
    return [editAction] 
} 

我可以得到數據使用正常賽格瑞用下面的代碼來傳遞:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "EditDetails") { 
     [segue destinationViewController]. 
     var editView = segue.destinationViewController as! EditDetailsTableViewController 

    if let indexPath = self.tableView.indexPathForSelectedRow() { 
      let row = Int(indexPath.row) 
      editView.currentObject = objects[row] as? PFObject 
     } 

    } 
} 

但是,我似乎無法同時做到這兩點。我希望用戶能夠點擊編輯按鈕並填寫這些字段的詳細信息,並且可以編輯它們。

在建議的解決方案中添加...但是,仍然沒有通過。

var editAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: " Edit " , handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in 

     let objectToEdit = self.objects[indexPath.row] as! PFObject 
      self.performSegueWithIdentifier("EditDetails", sender: objectToEdit) 

回答

0

你只是試圖從該行中的某個對象,如一個textField傳遞值?你可以只保存當前indexPath,直接抓住他們,如果你需要一些文本字段值或通過行作爲發件人

self.performSegueWithIdentifier("EditDetails", sender: cell) // get the cell from the indexPath or just pass the indexPath 

然後你可以使用在prepareForSegue

+0

我試過你的解決方案,但是,我仍然通過零。我在底部的原始問題中添加了我的代碼以嘗試解決方案。 – Addison

0

我只是有相同問題。檢查線程。底部是我自己的答案。

Table row action to segue with indexPath row

只發送indexPath,然後用它在prepareForSegue,使其工作。

+0

請不要發佈鏈接只回答其他堆棧溢出問題。相反,投票/標記將這個問題作爲一個副本來處理,或者,如果它不是重複的,*定製你對這個特定問題的答案。* – durron597