让UIViewController从底部出现,然后隐藏它

时间:2016-10-31 09:17:15

标签: ios swift uiviewcontroller

我需要一个UIViewController从另一个视图控制器的底部出现。

我还需要使用按钮再次隐藏它的选项,返回上一个视图控制器而不重新加载它。

有可能吗?

3 个答案:

答案 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)

我建议你分别使用presentViewControllerdismissViewController,但是使用这个,所提出的视图控制器将在解除时被解除分配,这意味着它需要重新加载。

有一种不太常见的方法,请允许我解释一下:

您可以从底部创建要显示的视图控制器的实例,然后将其添加为当前视图控制器的子级。然后将其添加到视图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)