在 Swift 中的 presentViewController 之后调用 pushViewController
Posted
技术标签:
【中文标题】在 Swift 中的 presentViewController 之后调用 pushViewController【英文标题】:Call pushViewController after presentViewController in Swift 【发布时间】:2016-10-02 19:59:22 【问题描述】:在 Swift 中调用 presentViewController
之后,是否可以以某种方式调用 pushViewController
?
或者至少当新的UIViewController
从左侧出现时我需要实现相同的行为。我开发的唯一选择是用CATransition()
伪造pushViewController
,但在这种情况下,新UIViewController
外观的机制与本机不同。
pushViewController
时,新的UIViewController
会出现在旧的UIViewController
上并淡出。
当您使用伪造的presentViewController
而新的UIViewController
出现之前,只会移出屏幕。
我也尝试使用 segue
,但在这种情况下,新的 UIViewController
从底部出现。
因此,如果可能的话,我更愿意在presentViewController
之后调用pushViewController
。
谢谢。
【问题讨论】:
您是否尝试过使用导航控制器并在情节提要上制作 segue? @Lu_ 是的,它还从底部显示新的UIViewController
,但我需要从左侧
所以如果你在情节提要中有 segue,简单的 performegue 方法应该可以完成这项工作
This 自定义过渡教程很棒,可能会帮助您。此外,您可能想更好地描述您在问题中想要实现的目标。
@Lu_ 从与presentViewController
一起显示的屏幕中继续从底部开始显示下一个屏幕,但我需要从左侧开始
【参考方案1】:
您需要使用UINavigationController
并将它的rootViewController
设置为您要呈现的UIViewController
(从底部开始 - 作为modal)。
拨打presentViewController
UINavigationController
。
然后您可以调用pushViewController 将UIViewControllers
推入导航堆栈,它将从侧面而不是底部滑入。
【讨论】:
这是个好主意,但我在这里看到了两件不适合我的模型的东西。首先UIModalTransitionStyleCoverVertical
只是 ios 9+,但我也需要这个解决方案来用于 IOS 8,其次在某些时候我会设置 rootViewController
回来,我会得到不需要的动画以上是关于在 Swift 中的 presentViewController 之后调用 pushViewController的主要内容,如果未能解决你的问题,请参考以下文章
UIViewController 关闭时不接收 dealloc 或 viewDidUnload
横向模式下的导航控制器堆栈,但总是以纵向帧大小模态呈现视图控制器视图
在 Swift 项目中使用 Objective C 类中的 Swift 类