我需要一个UIViewController从另一个视图控制器的底部出现。
我还需要使用按钮再次隐藏它的选项,返回上一个视图控制器而不重新加载它。
有可能吗?
答案 0 :(得分:1)
这是可能的。为此,您需要执行以下操作。
let an:AnotherViewController = AnotherViewController() //the viewcontroller to present
self.present(an, animated: true, completion: nil)
以上代码用于展示
self.dismiss(animated: true, completion: nil)
以上代码用于从呈现的视图控制器中解除。如果您的按钮位于显示的视图控制器内。然后,这可以使用。
答案 1 :(得分:1)
我建议你分别使用presentViewController
和dismissViewController
,但是使用这个,所提出的视图控制器将在解除时被解除分配,这意味着它需要重新加载。
有一种不太常见的方法,请允许我解释一下:
您可以从底部创建要显示的视图控制器的实例,然后将其添加为当前视图控制器的子级。然后将其添加到视图heirarchy并从屏幕外设置动画。使用以下代码作为指南:
let vc = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController")
self.addChildViewController(vc)
self.view.addSubview(vc.view)
vc.view.frame = CGRect(x: 0, y: self.view.frame.height, width: self.view.frame.width, height: self.view.frame.height)
vc.willMoveToParentViewController(self)
UIView.animateWithDuration(1) {
vc.view.frame = self.view.frame
}
然后只需反转动画即可在按下按钮时隐藏它。
答案 2 :(得分:0)
是的,这是可能的。您可以创建一个视图控制器,单击任何按钮即可打开另一个视图控制器并以模态方式显示。 在另一个视图中,控制器添加一个按钮,单击它可以关闭该视图控制器。
在故事板中的第一个视图控制器中,您可以在模式上按钮上添加操作,在下一个视图控制器中如果要删除则可以添加呼叫。 dismissViewControllerAnimated(true,completion:nil)