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