【问题标题】:Swift - Got unrecognized selector error after extend from GADBannerViewSwift - 从 GADBannerView 扩展后出现无法识别的选择器错误
【发布时间】:2019-09-26 00:00:56
【问题描述】:

我想构建像其他视图一样扩展 GADBannerView 的自定义类,但它不起作用

class ListAd:GADBannerView {
    var controller: UIViewController?

    convenience init(hostView: UIView, controller: UIViewController) {
        self.init(frame: hostView.bounds)
        self.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        self.translatesAutoresizingMaskIntoConstraints = false
        self.controller = controller
        hostView.addSubview(self)
    }

    func loadAd() {
        if APP.displayBannerAd {
            self.adUnitID = ADMOBIDS["banner"]
            self.rootViewController = controller
            self.load(GADRequest())
        }
    }
}

然后我初始化它

admobBanner = ListAd(hostView: self.view, controller: self)
admobBanner?.loadAd()

出现错误:

[App.ListAd setAdUnitID:]: unrecognized selector sent to instance 0x7fe7f9c04d60'

【问题讨论】:

    标签: swift oop inheritance admob extend


    【解决方案1】:

    尝试调用init(adSize: GADAdSize, origin: CGPoint) 或init(adSize: GADAdSize) 而不是self.init(frame:)

    【讨论】:

    • admobBanner 定义了什么类型?你有什么警告吗?我相信你在调用ListAd(hostView: self.view, controller: self) 时没有收到ListAd 实例,你能通过调试器验证吗?
    • 显然是ListAd 类型。 var admobBanner: ListAd? 你期待什么?一切正常,直到我打电话给.loadAd()。对象已初始化,我可以更改它的背景颜色,但设置 adUnitID 导致错误
    • 嗯。是的,我错了。您确实收到了 ListAd 实例。我认为这是框架本身的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多