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

时间:2015-06-17 23:31:30

标签: ios swift

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

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

我已经成功地以编程方式显示了一个视图控制器,覆盖了整个页面,但我无法找到如何为视图控制器的开放设置动画(从右到左)以及如何留下一些空间看到其他View Controller。它一定是在Swift中。我已经看到了一些关于此的问题,但我发现的所有问题都使用了Objective C和弃用的API。

由于

示例:

eBay app

2 个答案:

答案 0 :(得分:7)

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

一种方法是添加一个"容器视图" (它是IB中对象列表中的特殊视图类型)到当前视图控制器中并控制 - 将嵌入segue从容器视图拖到要托管的其他视图控制器场景中。放置容器视图并将其放大到最终位置,并添加一个前沿约束,将其定位在该位置。

当您使用容器视图和嵌入segue时,系统会负责您为托管子视图控制器而需要做的所有内务管理。

将插座连接到约束。

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

然后,当您想要将其设置到屏幕上时,更改约束上的常量值(减去您在viewWillAppear中添加的数量)并在UIView animateWithDuration:animations:块内调用link.text( linkText.replace(/\./g," ") ); link.text( linkText.replace(/_/g," ") );

答案 1 :(得分:0)

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

class Section < ActiveRecord::Base
  self.abstract_class = true
end