您的代码不工作的原因是因为您正在创建一个新的 GameViewController 并在其上设置 canDisplayBannerAds。
您需要保留对原始 GameViewController 的引用,您应该能够通过场景 SKView 从场景中访问它。
如果您不想继承您的 SKView,您可以使用以下内容来获取当前的 viewController。
if let viewController = view.nextResponder as? GameViewController /* or whatever your VC is */ {
viewController.canDisplayBannerAds = false
}
如果您的 SKView 是子视图,请将 view.nextResponder 更改为 view.superview.nextResponder。
您也可以使用通知中心向您的GameViewController发送消息
在您的 GameViewController 中。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "turnOffAds", name: "TurnOffAdsNotification", object: nil)
}
func turnOffAds() {
self.canDisplayBannerAds = false
}
在您的 SKScene 中的某处:
NSNotificationCenter.defaultCenter().postNotificationName("TurnOffAdsNotification", object: nil)