从行动中躲避?

时间:2017-01-18 21:21:54

标签: swift segue uitableviewrowaction

我有行动并希望用户能够单击它们,然后将其与单元索引路径中对象的信息一起调到新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以便行动作能够引用它

2 个答案:

答案 0 :(得分:0)

已解决,如您所评论的那样,您可以在VC级别而不是行动作中创建IBI中的segue,然后使用我在问题中提出的performSegue(withIdentifier:sender:)将行segue id分配给行动作。

答案 1 :(得分: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
 }

}