动画替换 UINavigationController 的 viewControllers
Posted
技术标签:
【中文标题】动画替换 UINavigationController 的 viewControllers【英文标题】:Animate Replacing viewControllers for UINavigationController 【发布时间】:2016-10-27 20:55:54 【问题描述】:我有一个菜单,允许用户在视图堆栈之间切换。我想做的是让 UINavigationController 通过幻灯片动画从一个堆栈切换到下一个堆栈。
所以,要向当前堆栈添加一个视图,我知道我可以这样做:
self.navigationController!.pushViewController(myController, animated: true)
这会将视图滑动到堆栈上,动画。
我知道我能做到这一点
self.navigationController!.viewControllers = newControllersStack
但这不是动画并且感觉很hacky,因为它只是注入堆栈流而没有任何适当的流。我想做的是这个
self.navigationController!.changeViewControllers(newControllersStack, animated: true)
有没有办法做到这一点?我查看了一个标签栏,但我必须隐藏标签(使用侧边菜单进行导航),即便如此,它也会在 UINavigationControllers 之间动画转换,而不是在单个导航控制器内的视图。
【问题讨论】:
UINavigationController.setViewControllers(_:animated:)
呢?
这是一个反模式。在导航堆栈中时,用户希望能够按照到达当前控制器的相同顺序遍历堆栈。我不建议以这种方式替换堆栈。
@LeoNatan 好吧。我怎么会错过。添加它作为答案,我会接受。这看起来正是我需要的。就我而言,这是有道理的。这是一个新的导航堆栈,类似于选项卡控制器,当他们从侧面菜单中选择某些内容时。
酷。添加为答案。
将接受 5 @LeoNatan。你这么快就完成了,我还没有达到接受答案的时间范围。
【参考方案1】:
使用UINavigationController.setViewControllers(_:animated:)
。
【讨论】:
以上是关于动画替换 UINavigationController 的 viewControllers的主要内容,如果未能解决你的问题,请参考以下文章
动画替换 UINavigationController 的 viewControllers