簡體   English   中英

從 collectionView 呈現一個 viewController

[英]Present a viewController from collectionView

我正在擴展 UICollectionView 以創建一個空視圖,我無法調用self.present 有沒有更好的方法來處理空視圖? 我應該如何處理 collectionView 中的 self.present?

extension UICollectionView {
    func setEmptyView() {

        let signUpButton = UIButton(type: .custom)
        signUpButton.addTarget(self, action: #selector(onSignIn), for: .touchUpInside)
    }

    @objc func onSignIn() {
        let viewController = SignInController()
        viewController.modalPresentationStyle = .fullScreen
    
    }
}

您可以從頂部 controller 呈現。使用此擴展程序,您將獲得頂部 controller...

extension UIApplication {

    class func getTopMostViewController() -> UIViewController? {
        let keyWindow = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
        if var topController = keyWindow?.rootViewController {
            while let presentedViewController = topController.presentedViewController {
                topController = presentedViewController
            }
            return topController
        } else {
            return nil
        }
    }
}

然后在您的收藏視圖擴展中

extension UICollectionView {
    func setEmptyView() {

        let signUpButton = UIButton(type: .custom)
        signUpButton.addTarget(self, action: #selector(onSignIn), for: .touchUpInside)
    }

    @objc func onSignIn() {
        let viewController = SignInController()
        viewController.modalPresentationStyle = .fullScreen
        UIApplication.getTopMostViewController()?.present(viewController, animated: true, completion: nil)
    }

}

暫無
暫無

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

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