无法将类型“ 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
        }
    }
}

我该如何最好地解决这个问题?

解决方法

您只需要设置当前的viewController即可,例如,可以使用rootVC窗口

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