从行动作中分离出来?

Segue from row action?

我有行操作,希望用户能够单击它们,然后转到新的 VC 以及单元格索引路径中对象的信息。这是我当前的代码:

    func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
    let update = UITableViewRowAction(style: .normal, title: "Update") { (action, indexPath) in
        let cell = tableView.cellForRow(at: indexPath)
        self.performSegue(withIdentifier: "XXXXXX", sender: cell)
    }
    update.backgroundColor = UIColor.blue
    return [update]
}

我的想法是我可以将单元格设置为行操作打开的索引路径,然后转到我想要的 VC。

问题是,很明显你不能在 IB 中从一个行动作中绘制一个 segue,那么我应该如何创建它呢?我知道我可以做到,因此用户可以 select 单元格行进行 segued 但我希望它专门针对行操作而不是单元格本身。

对于实现这一目标的任何帮助,我深表感谢!

编辑:为了说明这个 Q 与提议的有何不同,我无法在情节提要中为行动作创建 segue 以便能够引用它

已解决,如评论所述,您可以在 VC 级别而不是专门在行操作上创建 IB 中的转场,然后使用 performSegue(withIdentifier:sender:) 中的建议将该转场 ID 分配给行操作我的问题。

创建一个从当前 viewController 到目的地 viewController 的转场并提供一些转场 ID 让我们说 "AbcVCto" 在你的 didSelectRowAtIndexPath- 调用此方法。

cell.tag = indexPath.row;
[self performSegueWithIdentifier:"AbcVCTo" sender:cell];

以上方法需要准备segue并像这样使用它。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"AbcVCto"]) {
        UITableViewCell *cell = (UITableViewCell *)sender;
        //You can fetch data from array with your cell row number with cell.tag number
        //e.g
        segue.destinationViewController.selectedCellName = [arrayOfCellNames objectAtIndex:cell.tag];
    }
}

以上模式 Swift 3

cell.tag = indexPath.row
self.performSegue(WithIdentifier:"AbcVCTo", sender:cell);

override func prepare(for Segue: UIStoryboardSegue, sender: Any?) {
if forSegue.identifier == "ABCVCTo" {
      guard let cell = sender as? UITableViewCell else {
           return
      }
      //now your cell.tag is the selected cell indexNumber
 }

}