无法将“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”类型的返回表达式?的主要内容,如果未能解决你的问题,请参考以下文章

无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS

C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable

无法将 [Struct] 类型的值快速转换为 [string] 类型

无法将类型“()”的值转换为预期的参数类型“字符串”

无法将“字符串”类型的值转换为预期的参数类型 [任何]

Swift“无法将''类型的值转换为'String'类型