[英]How to dismiss viewController in ios using Swift
我有一個viewController,它只包含一個imageview。 我想在應用程序中加載時提供它,例如從Web服務獲取數據。 所以我在我的loaderViewController中創建了一個函數
func showLoading(viewController:UIViewController) {
viewController.presentViewController(LoadingViewController(), animated: false, completion: nil)
}
這是按預期工作的,當我在需要時調用此函數,如下所示
var loader = LoadingViewController()
loader.showLoading(self)
它向我展示了帶有圖像的viewController。
但是現在想要在需要的時候忽略這個viewController,但我無法這樣做,這是我到目前為止所嘗試的,我在我的LoaderViewController中創建了另一個函數as
func dismissLoader() {
let load = LoadingViewController()
load.dismissViewControllerAnimated(true) {
print("Dismissing Loader view Controller")
}
}
但它沒有工作,viewController沒有從屏幕上消失。
請指導我
您不必創建加載器的新實例,並在其上調用dismissViewControllerAnimated(_:Bool)
。
打電話吧
self.dismissViewControllerAnimated(true)
在你的viewController上
所以,你的功能將是
func dismissLoader() {
dismissViewControllerAnimated(true) {
print("Dismissing Loader view Controller")
}
}
在Swift 3中,您可以執行以下操作。
self.dismiss(animated: true)
不要每次都let load = YASLoadingViewController()
,你創建不同的控制器做一次,然后只使用load
來解雇或呈現
self.dismissViewControllerAnimated(false, completion: nil)
你的代碼有很多缺陷。 你試圖實現這一目標的方式並不是一個好習慣。 但是,如果您想快速修復,只想修改現有方法,請執行此操作,
func dismissLoader() {
self.dismissViewControllerAnimated(true)
print("Dismissing Loader view Controller")
}
當你呈現一個新的LoadingViewController
,保持對它的引用,這樣你就可以調用上面的方法。
無論如何,上面的代碼應該可以工作,即使沒有你持有引用,因為iOS將這個方法委托給它的層次結構的父ViewController,如果在被調用的ViewController上沒有提供的ViewController。
您必須在父視圖控制器中存儲LoadingViewController
的鏈接:
var loader: LoadingViewController?
func showLoadingIn(viewController: UIViewController) {
loader = LoadingViewController() // create new instance before presentation
viewController.presentViewController(loader!, animated: false, completion: nil)
}
func dismissLoader() {
loader?.dismissViewControllerAnimated(true) {
print("Dismissing Loader view Controller")
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.