簡體   English   中英

取消presentingviewController后顯示警報

[英]Show alert after dismissing presentingviewController

當用戶購買completion handler通知我並關閉viewController 但是,我想在viewController后向用戶顯示/顯示alert 在我進入調試器的那一刻,它遍歷了代碼,但未顯示警告。 仍然內置在蘋果中,上面寫着“ All set 在關閉viewController之后,有什么方法可以顯示我的警報viewController

override func viewWillDisappear(_ pAnimated: Bool) {
    super.viewWillDisappear(pAnimated)
    self.notifyForUserHasPurchasedProduct {
        self.presentingViewController?.dismiss(animated: true, completion: {
            UIAlertController.bs_showAlertFrom(self, title: "AppName", message: "Thank you. Your purchase was successful")
        })
    }
}

您需要調用self.present(alert, animated: true)來顯示警報。 當不存在ViewController self ,您需要將代碼更改為presentedViewController.present(alert, animated: true)

我已經建立了一些功能:

extension UIViewController {

    func topMostViewController() -> UIViewController {

        if let presented = self.presentedViewController {
            return presented.topMostViewController()
        }

        if let navigation = self as? UINavigationController {
            return navigation.visibleViewController?.topMostViewController() ?? navigation
        }

        if let tab = self as? UITabBarController {
            return tab.selectedViewController?.topMostViewController() ?? tab
        }

        return self
    }
}

func getRootController () -> UIViewController { // function in global scope
    return (UIApplication.shared.delegate?.window!!.rootViewController)!
}

然后像下面這樣使用它們:

override func viewWillDisappear(_ pAnimated: Bool) {
    super.viewWillDisappear(pAnimated)
    self.notifyForUserHasPurchasedProduct {
        self.presentingViewController?.dismiss(animated: true, completion: {
        let alert = UIAlertController(title: "AppName", message: "Thank you. Your purchase was successful", preferredStyle: .alert)

        let topC = getRootController().topMostViewController()
        topC.present(alert, animated: true, completion: nil)
        })
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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