无法将“MopubBannerAdView”类型的返回表达式转换为“UIViewController”类型的返回表达式?

Posted

技术标签:

【中文标题】无法将“MopubBannerAdView”类型的返回表达式转换为“UIViewController”类型的返回表达式?【英文标题】:Cannot convert return expression of type 'MopubBannerAdView' to return type 'UIViewController?' 【发布时间】:2021-01-18 06:37:54 【问题描述】:

我试图在我的 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
        
    


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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于无法将“MopubBannerAdView”类型的返回表达式转换为“UIViewController”类型的返回表达式?的主要内容,如果未能解决你的问题,请参考以下文章