11

我有一个 3 视图控制器导航,其中 A 呈现模态控制器 B,它通过 segues 呈现模态控制器 C。C 有一个回到 B 的展开 segue。它也有一个回到 A 的展开。当我执行 C 展开到 B 的操作时,它展开但随后弹出 B 并返回到 A。这不是我想要的,我想要在这种情况下,它留在 B 上。下面是 VC C 使用的 segues。

从 VC C 中解脱出来

unwindCancel 用于当用户单击 collectionViewCell 并返回到 VC B 时。prepareForUnwind 只是 VC A 的标准“取消”按钮。

下面是 didSelectItem 在 VC C 中调用 unwind 的代码。下面是 VC C 中的 prepareForSegue。

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
[self performSegueWithIdentifier:@"unwindCancel" sender:self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"unwindCancel"]) {
        GalleryDetailViewController *detailVC = segue.destinationViewController;
        detailVC.colletionCount = self.indexPathToPass;
    }
}

VC B 在 .m 文件中展开

-(IBAction)unwindCancel:(UIStoryboardSegue *)segue{

    [self.collectionView scrollToItemAtIndexPath:self.colletionCount atScrollPosition:UICollectionViewScrollPositionLeft animated:YES];
}

VC A 在 .m 文件中展开

-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue {
}
4

2 回答 2

3

从 C 到 B 时,不要使用展开转场,只需让 C 调用dismissViewController。如果您致力于使用展开转场,请在此处特别查看部分标题如何展开转场确定其目标视图控制器

于 2015-11-03T13:11:31.590 回答
2

我猜您将 unwind-segue 的标识符与 unwind-segue 的 Action 方法混淆了。

如果您使用“prepareForUnwind”操作构建一个 unwind-segue,然后将此 unwind-segue 的标识符更改为“unwindCancel”。就会出现问题。

只需确保 unwind-segue 的标识符与它的操作方法匹配即可。

于 2015-11-04T14:35:47.837 回答