【问题标题】:Unwind Segue iOS goes back 1 too many VC'sUnwind Segue iOS 回归 1 太多 VC
【发布时间】:2015-10-29 04:09:17
【问题描述】:

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

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 {
}

【问题讨论】:

    标签: ios uiviewcontroller unwind-segue


    【解决方案1】:

    当从 C 转到 B 时,不要使用 unwind segue,只需让 C 调用dismissViewController。如果您致力于使用展开转场,请查看 here 专门部分标题如何展开转场确定其目标视图控制器

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 从 C 有 2 个展开转场 - 一个回到 B,一个回到 A。
      • @noobsmcgoobs 我重新创建了你的演示,问题不存在。所以我猜你给 segue 一个错误的名字。把“nslog”放在你的两个展开方法中,看看哪个被调用了。
      • @noobsmcgoobs 这篇文章类似于你的:stackoverflow.com/q/33181577/4975761
      • 名称没有错,但 VC C 也使用 prepareForUnwind 弹回 A。当我将 segue 从 VC(而不是按钮)拖到 Exit 时,这不会发生。我会尝试发布的解决方案,但乍一看,它不像解决方案那样命名错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      相关资源
      最近更新 更多