Ios Swift:删除Spritekit中不同场景的广告

Ios Swift:删除Spritekit中不同场景的广告,ios,swift,sprite-kit,mopub,Ios,Swift,Sprite Kit,Mopub,我使用的是MoPub横幅广告,我在视图控制器的viewDidLoad中添加了以下代码: self.adView.delegate = self self.adView.frame = CGRectMake(0, self.view.bounds.size.height - MOPUB_BANNER_SIZE.height, MOPUB_BANNER_SIZE.width, MOPUB_BANNER_SIZE.height) self.view.addSu

我使用的是MoPub横幅广告,我在视图控制器的viewDidLoad中添加了以下代码:

     self.adView.delegate = self
    self.adView.frame = CGRectMake(0, self.view.bounds.size.height - MOPUB_BANNER_SIZE.height,
        MOPUB_BANNER_SIZE.width, MOPUB_BANNER_SIZE.height)
    self.view.addSubview(self.adView)
    self.adView.loadAd()
但它使广告在所有场景中都可见,而我只希望它在主菜单场景中可见


如何在我不希望的场景中删除广告?

这可能不是最好的方法,但可能是最简单的方法。您可以使用
NSNotification
向您的
ViewController
广播消息,以显示或隐藏您的横幅

例如,如果在
init
viewDidLoad
上的
ViewController
中添加一个“观察者”:

NSNotificationCenter.defaultCenter().addObserver(
  self, 
  selector: "hideBannerAd", 
  name: "hideAd", 
  object: nil)
要使
ViewController
侦听名为
“hideAd”
的消息,然后执行名为
hideBannerAd
的方法

然后执行此方法:

func hideBannerAd(){
  self.adView.hidden = true
}
确保在
deinit
上删除观察者,这不太可能是一个问题,因为
SpriteKit
中的
ViewController
持续存在,但这是一个很好的做法

deinit{
  NSNotificationCenter.defaultCenter().removeObserver(self)
}
然后,当您想要显示或隐藏视图时,例如在场景转换或游戏结束方法上,您可以通过使用以下命令触发观察者来实现此
hidebanerad
方法:

NSNotificationCenter.defaultCenter().postNotificationName("hideAd", object: nil)
旗帜应该隐藏起来。然后,通过将
hidden
属性设置为
false
,可以对类似的
showBannerAd
方法重复此操作,或者您可以使用一个方法,使用
adView.hidden=!adView.hidden

我希望这有帮助