簡體   English   中英

如何使用Swift關閉ios中的viewController

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM