Ios 如何在另一个方法之后调用segue

Ios 如何在另一个方法之后调用segue,ios,objective-c,Ios,Objective C,我有一个带有CutomCells的TableViewCell,其中包括图像视图,当用户选择某一行时,该行中的图像应显示在另一个viewController中。 这些控制器之间的连接是通过segue完成的,在这里我尝试设置映像 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"ImageVC"]) {

我有一个带有CutomCells的TableViewCell,其中包括图像视图,当用户选择某一行时,该行中的图像应显示在另一个viewController中。 这些控制器之间的连接是通过segue完成的,在这里我尝试设置映像

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"ImageVC"])
    {
        ImageViewController * ivc = segue.destinationViewController;
        ivc.myTemporaryImage = [self.dataDictionary objectForKey:self.names[self.selectedCell]];
    }
}
要定义选择了哪一行,我使用TableViewDelegates方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   self.selectedCell = indexPath.row;
    [self.dataDictionary objectForKey:self.names[indexPath.row]];
}
这里的问题是没有反映图像,原因是首先触发方法:prepareForSegue,然后才触发-DidSelectRowatineXpath。但是我需要改变这个顺序。你能告诉我怎么做吗

我还尝试直接在方法didSelectRowAtIndexPath中以编程方式创建ImageViewController,而不使用segue,但在本例中未显示此图像

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   [self.dataDictionary objectForKey:self.names[indexPath.row]];

    ImageViewController * ivc = [[ImageViewController alloc]init];
    ivc.myTemporaryImage = [self.savedImages objectForKey:self.names[indexPath.row]];

    [self.navigationController pushViewController:ivc animated:YES];
}

您能告诉我如何处理这个问题吗?

我认为您可以在WillSelectRowatineXpath方法中保存indexPath。

我认为您可以在WillSelectRowatineXpath方法中保存indexPath。

您必须删除单元格中对segue的直接引用,然后在tableView委托中以编程方式调用它:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   self.selectedCell = indexPath.row;
   [self performSegueWithIdentifier:@"ImageVC", sender: [self.savedImages objectForKey:self.names[indexPath.row]]]
}
然后在准备阶段:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"ImageVC"])
    {
        ImageViewController * ivc = segue.destinationViewController;
        ivc.myTemporaryImage = sender;
    }
}

您必须在单元格中删除对segue的直接引用,然后在tableView委托中以编程方式调用它:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   self.selectedCell = indexPath.row;
   [self performSegueWithIdentifier:@"ImageVC", sender: [self.savedImages objectForKey:self.names[indexPath.row]]]
}
然后在准备阶段:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"ImageVC"])
    {
        ImageViewController * ivc = segue.destinationViewController;
        ivc.myTemporaryImage = sender;
    }
}

谢谢,我现在就试试)Jason,不幸的是,当这个方法被实现时,segue被忽略了-它根本没有被触发。谢谢,我现在就试试)Jason,不幸的是,当这个方法被实现时,segue被忽略了-它根本没有被触发。它工作得非常完美!!!非常感谢)它工作得很好!!!非常感谢