从行动作中分离出来?
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
}
}
我有行操作,希望用户能够单击它们,然后转到新的 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
}
}