0

我有行操作,并希望用户能够单击它们,然后与单元格索引路径中的对象信息一起使用新的 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,那么我应该如何创建它呢?我知道我可以做到,因此用户可以选择要分隔的单元格行,但我希望它专门用于行操作而不是单元格本身。

感谢您对如何实现这一目标的任何帮助!

编辑:建议这个 Q 与建议的不同之处,我无法在情节提要中创建 segue 以使行动作能够引用它

4

2 回答 2

1

performSegue(withIdentifier:sender:)已解决,正如所评论的,您可以在 IB 中在 VC 级别创建 segue,而不是专门针对行操作,然后按照我的问题中的建议将该 segues id 分配给行操作。

于 2017-01-18T21:45:27.683 回答
0

创建一个从当前 viewController 到目标 viewController 的 segue 并提供一些 segue 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
 }

}

于 2017-01-18T22:46:02.103 回答