繁体   English   中英

如何在Swift中向另一个内部呈现视图控制器?

[英]How do I present a view controller inside another in Swift?

我正在制作一个可搜索的列表应用程序。 它将有一个“过滤器”按钮,单击该按钮将显示过滤选项列表

模态视图控制器应该从右到左,而不是覆盖整个屏幕(如下所示)。

我已经设法以编程方式显示一个视图控制器,覆盖整个页面,但我无法找到如何设置视图控制器的开放动画(从右到左)以及如何留出一些空间来查看另一个查看控制器。 它一定是在Swift中。 我已经看到了一些关于这个的问题,但我能找到的所有问题都使用了Objective C和不推荐使用的API。

谢谢

例:

易趣应用

毫无疑问,有多种方法可以做到这一点。

一种方法是将“容器视图”(它是IB中对象列表中的特殊视图类型)添加到当前视图控制器中并控制 - 将嵌入segue从容器视图拖到您想要的其他视图控制器场景中举办。 将容器视图放置并调整到最终位置,然后添加将其定位在该位置的前沿约束。

当您使用容器视图和嵌入segue时,系统会处理您需要执行的所有内务处理,以便托管子视图控制器。

将插座连接到约束。

在viewWillAppear方法中,将screen width - container x添加到约束的常量,并在内容视图上调用layoutIfNeeded(),将其移出屏幕而不显示动画。 将添加的数量保存到实例变量中的水平约束中。

然后,当您想要将其设置到屏幕上时,更改约束上的常量值(减去您在viewWillAppear中添加的数量)并在UIView animateWithDuration:animations: block中调用layoutIfNeeded()

您可以创建一个容器视图,并从右到左为屏幕上的动画设置动画。

let containerView = UIView()
    containerView.addSubview(viewController.view)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM