Ios 如何在另一个方法之后调用segue
我有一个带有CutomCells的TableViewCell,其中包括图像视图,当用户选择某一行时,该行中的图像应显示在另一个viewController中。 这些控制器之间的连接是通过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"]) {
- (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被忽略了-它根本没有被触发。它工作得非常完美!!!非常感谢)它工作得很好!!!非常感谢