在Swift中显示和关闭模态视图控制器

23

当按下按钮时,我想使用模态转换样式CoverVertical在两个视图控制器之间进行过渡,然后将其解除。关于如何在Objective C中完成此操作有很多信息,但是在Swift中找不到任何好的信息。到目前为止,我已经做到了这一点,但我认为它不正确:

当按下按钮时,我想使用模态转场样式CoverVertical在两个视图控制器之间进行切换,然后关闭它。虽然有很多关于在Objective C中如何实现此操作的信息,但却找不到适用于Swift的好资料。到目前为止,我已经做了这个,但我不确定是否正确:

 @IBAction func insertStatus(sender: UIButton) {

         var StatusVC: StatusViewController = StatusViewController()
    var modalStyle: UIModalTransitionStyle = UIModalTransitionStyle.CoverVertical
    StatusVC.modalTransitionStyle = modalStyle
    self.presentViewController(StatusVC, animated: true, completion: nil)

    }

我使用的这个Dismiss也不起作用:

@IBAction func statusSaved(sender: UIBarButtonItem) {

        self.dismissViewControllerAnimated(false, completion: { () -> Void in
            let usersVC: UsersViewController = self.storyboard?.instantiateViewControllerWithIdentifier("UsersViewController") as UsersViewController
       })
    }

你尝试过使用Storyboard连接这两个ViewControllers吗? - Mustafa Ibrahim
不,我知道可以那样做,但是那样并不能让你忽略它,对吧?我想以编程的方式来完成。 - user4184036
抱歉,您能详细解释一下您想要做什么吗?谢谢。 - Mustafa Ibrahim
我正在VC1上。当按下按钮时,我想以模态方式呈现VC2(例如,以模态方式呈现)。然后,我想在VC2中更新某些内容(例如一些文本),完成后按保存并关闭VC2。希望这可以帮助到您... - user4184036
这是我想要实现的东西,但仅使用VC:https://dev59.com/questions/4GUp5IYBdhLWcg3w-LQJ - user4184036
5个回答

50

Swift 5:

present(UIViewController(), animated: true, completion: nil)

dismiss(animated: true, completion: nil)

Swift 2.2:

self.presentViewController(true, completion: nil)

隐藏/关闭视图控制器:

self.dismissViewControllerAnimated(true, completion: nil)

谢谢,我现在正在解决这个问题,我已经编辑了我的问题,但是现在屏幕变成黑色了? - user4184036
将第二行修改为:var StatusVC: UIViewController = StatusViewController()。如果不起作用,请改为以下内容:var StatusVC: StatusViewController = UIViewController() - Cesare
第一个是正确的。您是否记得在Storyboard中(通过Identity Inspector,Class)将UIViewController命名为StatusVC? - Cesare
无论是将其命名为StatusVC还是StatusViewController,它仍然只会变成黑色。我想不出问题出在哪里... - user4184036
StatusVC。抱歉,什么是StatusViewController?你还没有回答我的上一个问题。 - Cesare
显示剩余8条评论

9

在 Swift 3.0 中关闭视图控制器

self.dismiss(animated: true, completion: {})

2
使用“隐藏”这个词可能会有点令人困惑,因为“隐藏”感觉就像对象仍然存在,但你看不到它。实际上,在视图控制器从屏幕上消失后,它的对象被销毁,并且它所使用的内存被系统回收。 - SLN

2

在Swift 4中关闭视图控制器:

dismiss(animated: true, completion: nil)

2

你可以使用UIViewController中的presentViewController:animated:completion:dismissViewControllerAnimated:completion:方法。相关文档在这里


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接