2017-02-25 115 views
0

这是我的情况:以模态方式在导航堆栈中呈现视图控制器

我有两个视图控制器嵌入在导航控制器中。我会叫他们发件人和目的地

基本上我想要实现的是用导航堆栈中的目标“替换”发件人,以便按发件人上的按钮继续前往目的地但按“ <返回“按钮导航栏中的发件人和目的地将导致相同的视图控制器。

问题出在这里:我希望这两个视图控制器之间的转换是水平翻转,所以我创建了一个连接发送者和目的地的种类“Present Modally”,转换为“Flip Horizo​​ntal”。 在发件人中,我选择“定义上下文”选项。

现在,对于连接SEGUE:

- 当我选择“在当前语境下”为展示它正是我想要的! ...除了动画看起来有点won。。基本上,发送者保持平坦和静止,而目的地在其上方翻转,而不是“一起”翻转。这是有道理的,因为segue提供而不是发件人,但它不是我想要的。

- 当我选择“当前上下文”进行演示时,动画看起来很棒! ...除了在导航栏中按下“<返回”按钮,它只是导致带有导航栏的纯黑色视图,如果我在此视图上再次按下“<返回”按钮,我会看到以下异常:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't add self as subview' 

任何人都有任何想法,我怎么能实现我想要做的?这甚至是正确的方法吗? 我见过一些建议,尝试将视图控制器视图翻转到新视图,而不是将整个视图控制器翻转到不同的视图控制器。但是故事板中的一个视图控制器可以有两个“全尺寸”视图吗?

谢谢!

回答

0

我确定有各种方法可以工作,但我的第一个想法是创建发件人和目的地视图的容器视图。

所以,你必须......

  • NavigationController用根视图控制器( “RVC”)
  • 容器视图控制器( “CVC”)
  • 发件人VC
  • 目的地VC

而不是“RVC”继续“发送者”你继续“CVC”...“CVC”最初加载“发件人”到其“容器视图”...在这一点上,点击<返回自然返回到“RVC”

当您点击一个按钮(或任何您用来启动下一个转换)转到“目的地”时,您可以使用“用发件人替换目的地“容器视图内 ...在这一点,因为“CVC”仍然是顶级的堆栈视图控制器,攻丝<回将再次带你回到“RVC”

希望是有道理的:)

演示示例可在这里:https://github.com/DonMag/ContainerViewExample

+0

嗯所以如何更换行动工作?我仍然会使用类似的水平翻转赛?如果是这样,我不会像以前一样遇到同样的问题,只是在这种情况下,它会在CVC而不是发件人VC? – user3029918

+0

不,你不会使用segue ...看看:https://developer.apple.com/reference/uikit/uiview/1622574-transition – DonMag

+0

如果你仍然在为此工作,我把在https://github.com/DonMag/ContainerViewExample – DonMag

相关问题