为 navController 设置动画时保留 UIView
Posted
技术标签:
【中文标题】为 navController 设置动画时保留 UIView【英文标题】:Keep UIView while animating navController 【发布时间】:2014-09-18 22:17:19 【问题描述】:如何在新的 uinavigation 控制器中设置动画,但在窗口中保持相同的 uiview?
我在相反的情况下看到了这一点 - navController 保持原位,而容器视图将视图控制器更改为子视图控制器,但我想要相反的情况:主视图,地图视图,保持在窗口中在任何时候,当一个新的 vc2 从 push segue 滑入时,它将显示不同的 navBar 标题和 uibarbutton 项目。这很重要,因为我需要 VC1 中的地图视图在 VC2 中复制,或者达到那种效果。
这可以做到吗?如何做到?谢谢大家的建议,
【问题讨论】:
不确定我是否理解您的问题。 vc2 是否需要具有相同的地图视图(相同的实例)?如果是这样,您为什么要切换到新的vc?如果它们控制同一个视图,那么拥有两个视图控制器的目的是什么? 是的,你是对的,关键是vc中的用户!正在向地图添加注释,并且涉及很多 UI 元素,然后在 vc2 中,地图会添加其他元素,例如 google Places API 和叠加渲染。这样做不是明智之举吗? 很难在摘要中说它是否有意义。两个不同的视图控制器控制同一个视图并不常见。 我知道,我一直遇到困难。我可能会接受的是创造一种错觉,即 vc1 中的 mapview 没有使用 vc2 移动/动画,而其他元素(如导航栏)会移动,但现在这也证明很麻烦,因为移除来自 vc1 的 mapview 并在 vc2 动画进入之前将其发送到 vc2。 【参考方案1】:在没有导航控制器的情况下这样做可能会更好。您可以创建一个顶部带有导航栏的自定义容器控制器。您可以将 vc2 添加为容器控制器的子级,从 vc1 中删除地图视图,将其添加到 vc2 的视图中,然后从容器控制器中删除 vc1。这一切都将在没有动画的情况下完成,因此用户不应该在主视图中看到任何发生的事情。您可以在导航栏上调用 pushNavigationItem:animated: 以在新的导航项中进行动画处理。
【讨论】:
以上是关于为 navController 设置动画时保留 UIView的主要内容,如果未能解决你的问题,请参考以下文章
如何修复MainActivity没有navcontroller?