在 Swift 中显示和关闭模态视图控制器
Posted
技术标签:
【中文标题】在 Swift 中显示和关闭模态视图控制器【英文标题】:Display and dismiss a modal view controller in Swift 【发布时间】:2015-01-25 17:54:39 【问题描述】:按下按钮时,我想使用模态转换样式CoverVertical
在两个视图控制器之间切换,然后将其关闭。那里有很多关于如何在目标 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 连接两个 ViewController?? 不,我知道该怎么做,但这不允许你解雇它吗?我想以编程方式进行。 对不起,您能详细解释一下您要做什么吗?谢谢。 我在 VC1 上。当按下按钮时,我想以模态方式呈现 VC2(例如,以模态方式呈现)。然后我想更新 VC2 中的某些内容(例如一些文本),然后在完成后按保存,它将关闭 VC2。希望这会有所帮助... 这是我正在努力实现的目标,但仅限于 VC:***.com/questions/14907518/… 【参考方案1】:斯威夫特 5:
present(UIViewController(), animated: true, completion: nil)
dismiss(animated: true, completion: nil)
斯威夫特 2.2:
self.presentViewController(true, completion: nil)
隐藏/关闭视图控制器:
self.dismissViewControllerAnimated(true, completion: nil)
【讨论】:
谢谢我现在到了那里,我已经编辑了我的问题,现在屏幕变黑了吗? 将第二行修改为:var StatusVC: UIViewController = StatusViewController()
。如果它不起作用,请将其替换为:var StatusVC: StatusViewController = UIViewController()
。
第一个仍然变黑,第二个要求一个 nibName?我不知道我的是什么?
第一个是正确的。您是否记得在 Storyboard 中将 UIViewController
命名为 StatusVC(通过 Identity Inspector、Class)?
将其命名为 StatusVC 还是 StatusViewController?无论哪种方式,它仍然只是变黑。想不通...【参考方案2】:
在 Swift 3.0 中关闭视图控制器
self.dismiss(animated: true, completion: )
【讨论】:
您使用“隐藏”这个词会有点令人困惑,因为隐藏,感觉就像对象仍然在那里但您没有看到它。事实上,当视图控制器从屏幕上消失后,它的对象就被销毁了,它所使用的内存也被系统回收了。【参考方案3】:您可以使用来自UIViewController
的presentViewController:animated:completion:
和dismissViewControllerAnimated:completion:
方法。请参阅文档here
【讨论】:
【参考方案4】:在 Swift 4 中关闭视图控制器:
dismiss(animated: true, completion: nil)
【讨论】:
【参考方案5】:很简单:
使用 swift 3.0 关闭模态视图: 像下面这样使用dismiss Api:
> @IBAction func dismissClick(_ sender: Any)
> dismiss(animated: true, completion: nil)
>
>
目前:
> @IBAction func dismissClick(_ sender: Any)
> present(UIViewController(), animated: true, completion: nil)
>
>
这里有更多详细信息:
https://developer.apple.com/documentation/uikit/uiviewcontroller#//apple_ref/doc/uid/TP40006926-CH3-SW96
【讨论】:
以上是关于在 Swift 中显示和关闭模态视图控制器的主要内容,如果未能解决你的问题,请参考以下文章