将代理路由到Swift中的类扩展

时间:2015-10-02 05:24:35

标签: ios swift delegates adbannerview

我面临以下问题。对于我的应用程序,我想将所有与iAd相关的功能放入所有目标(tvOS,iOS,watchOS)中使用的类的扩展中。但扩展只应在iOS上提供,因为它是目前唯一支持iAd的平台。

我的代码如下:

class MenuViewController: UIViewController {
   var iAdsBannerView:ADBannerView?

override func viewDidLoad() {
    super.viewDidLoad();

    #if os(iOS)
        self.initializeIAds() // implemented in extension
    #endif
    }

   ...rest of the class...
}

扩展:

extension MenuViewController: ADBannerViewDelegate {

func initializeIAds() {
    self.canDisplayBannerAds = true;
    self.iAdsBannerView?.delegate = self;
    self.iAdsBannerView?.hidden = true;
}

func bannerViewDidLoadAd(banner: ADBannerView!) {
    print("Showing iAds ad")
    self.iAdsBannerView?.hidden = false;
}
...rest of class...
}

从基类调用initializeIAds()方法,但不调用委托方法bannerViewDidLoadAd()。

有什么建议吗?

谢谢!

0 个答案:

没有答案