「編集」ボタンと「削除」ボタンを表示するために「セル上で左にスワイプ」機能を実装しましたが、セルのindexPathForCellを正しく渡すのに苦労しています。編集ボタンをタップしたセルからのデータをAdd/Editのフィールドにあらかじめ入力するのではなく、Add/Editセルビューを表示するだけです。それはセグエがリンクされているものなので、私はセル自体をタップした場合UITableViewセルのeditボタンの隣にあるeditボタンの機能editActionsForRowAtIndexPath
// swipe-left options for a cell (Edit, Delete)
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
let delete = UITableViewRowAction(style: .Destructive, title: "Delete") { (action, indexPath) in
// delete item at indexPath
self.items.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
let edit = UITableViewRowAction(style: .Normal, title: "Edit") { (action, indexPath) in
// edit item at indexPath
self.performSegueWithIdentifier("EditItem", sender: self)
}
return [delete, edit]
}
// Prepare for Segue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "EditItem" {
let ItemDetailViewController = segue.destinationViewController as! AddItemController
// Get the cell that generated this segue.
if let selectedItemCell = sender as? ItemTableViewCell {
let indexPath = tableView.indexPathForCell(selectedItemCell)!
let selectedItem = item[indexPath.row]
ItemDetailViewController.item = selectedItem
}
}
else if segue.identifier == "AddItem" {
print("Adding new item.")
}
}
prepareForSegue機能が正常に動作します:
は、ここに私のItemTableViewControllerから該当するコードです。最終的に、私は別のビューに別のセグをトリガするためにセルをタップしたいので、実際にはこの実装の多く/ほとんどを取り除かなければならないようです。私は単に右クリックしてEdit cellボタンからドラッグするだけですが、ストーリーボードには表示されません。そのため、現在の実装では、 "tap-on-cell"アクションを避けていますが、 on-cell "segueを他の場所に移動するには、編集ボタンをどのようにして"このセルのindexPathを取得し、Add/Editビューに移動するか "ということについては全く迷っています。
返信いただきありがとうございます。 prepareForSegue関数のコードについてより具体的になりますか? – jspinella
'もしsegue.identifier ==" EditItem "{ をItemDetailViewController = segue.destinationViewControllerにすると! AddItemController indexPath = senderを!にしましょう! NSIndexPath selectItem = item [indexPath.row] ItemDetailViewController.item = selectedItem } 'セルでテーピングするときに新しいセグを作成 – FredericP
ありがとうございました!知らない人のために、ストーリーボードで物理的に右クリックできないUI要素にセグを追加する方法は次のとおりです。http://stackoverflow.com/questions/29294160/how-to-create -a-segue-in-associated-with-associated-ui-element(ViewController自体から目的の宛先にセグを追加するだけです) – jspinella