首页 > 解决方案 > 无法将“MopubBannerAdView”类型的返回表达式转换为“UIViewController”类型的返回表达式?

问题描述

我试图在我的 swiftUI 应用程序中显示 mopubBanner 并且我正在努力解决我必须在委托中实现的委托方法之一。我不确定是否可以在这里返回 viewController。

不实施此方法会导致横幅广告不可点击。

import MoPub

struct MopubBannerAdView: UIViewControllerRepresentable {

    typealias UIViewControllerType = UIViewController

    func makeUIViewController(context: Context) -> UIViewController {
        return MopubBannerViewController()
    }
    
    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
        
    }
    
    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }
    
    class Coordinator: NSObject, UINavigationControllerDelegate, MPAdViewDelegate {
        
        private let parent: MopubBannerAdView
        
        init(_ mopubView: MopubBannerAdView) {
            self.parent = mopubView
        }
        
        func viewControllerForPresentingModalView() -> UIViewController! {
            return self.parent /// this line here throws the error
        }
    }
}

我怎样才能最好地解决这个问题?

标签: swiftswiftuibannermopub

解决方案


您只需要设置呈现的 viewController 并为此您可以使用窗口 rootVC 例如

  func viewControllerForPresentingModalView() -> UIViewController! {
       return  UIApplication.shared.windows.filter {$0.isKeyWindow}.first?.rootViewController
   }

推荐阅读