Не удается преобразовать возвращаемое выражение типа ‘MopubBannerAdView’ в возвращаемый тип ‘UIViewController?’

#swift #swiftui #banner #mopub

#swift #swiftui #баннер #mopub

Вопрос:

Я пытаюсь показать mopubBanner в моем приложении SwiftUI и борюсь с одним из методов делегирования, которые я должен реализовать в делегате. Я не уверен, возможно ли вернуть 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, и для этого вы можете использовать window rootVC, например

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