5

我有一个根视图控制器A,它将segues推送到表视图控制器B。当在B中选择一行时。我想使用展开segue返回A并将行中的文本传递回根视图A. 然后我使用 prepare for segue 方法来发送限制,如下所示:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
     ViewControllerA *vca = (ViewControllerA *)segue.destinationViewController;
    vca.textString = [[_objects objectAtIndex:indexPath.row] objectForKey:@"title"];
}

但我不知道该怎么做,就是在 didSelectRowAtIndexPath 方法中调用 unwind segue。

我在这里先向您的帮助表示感谢。

4

3 回答 3

15

什么都不叫。连接控制器 B 中表格视图中单元格的展开转场,然后通过单元格上的触摸调用展开转场。您根本不需要实现 didSelectRowAtIndexPath。您可以从发件人那里获取 prepareForSegue 中的 indexPath(这将是您触摸的单元格),

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UITableViewCell *)sender{
     ViewControllerA *vca = (ViewControllerA *)segue.destinationViewController;
     NSIndexPath *selectedPath = [self.tableView indexPathForCell:sender];
     vca.textString = _objects[selectedPath.row][@"title"];
}
于 2014-05-28T20:02:58.323 回答
1

SWIFT 4.2 这是我在我的一个应用程序中的操作方式,它打开一个弹出菜单作为带有嵌入式表格视图的模态视图控制器,用户从模态视图控制器关闭的表格中选择数据并显示数据从调用视图控制器中拾取的单元格中。

调用视图控制器:

@IBAction func unwindFromPopup(segue: UIStoryboardSegue) {
    if segue.source is MyModalViewController {
        if let senderVC = segue.source as? MyModalViewController {
            MyTextField1.text = senderVC.MyID1InModalVC
            MyTextField2.text = senderVC.MyID2InModalVC
            MyTextField3.text = senderVC.MyID3InModalVC
        }
    }
}

模态视图控制器:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let cell = sender as! UITableViewCell
    let index = cell.convert(CGPoint.zero, to:self.tableView)
    let indexPath = self.tableView.indexPathForRow(at: index)

    // Now that I have the indexPath, I can do my stuff
    let myData = fetchedResultsController.object(at: indexPath!)
    MyID1InModalVC = myData.ID1!
    MyID2InModalVC = myData.ID2!
    MyID3InModalVC = myData.ID3!
}
于 2018-11-30T12:06:06.153 回答
0

如果您想返回视图控制器,则不需要为 segue 做准备。您可以直接调用该视图控制器。在这里检查。

然后,一旦您发送了父视图控制器的属性,您就可以简单地弹出当前视图控制器。

[self.navigationController popViewControllerAnimated:yes]

您可以在 didSelectRowAtIndexPath 中完成所有这些操作。

于 2014-05-28T19:54:59.760 回答