我目前正在尝试像Swift Sprite Kit In App Purchase这样在我的SKScene中实现IAP
但是我在从我的场景中弄清楚如何将self.canDisplayBannerAds设置为false时遇到问题,我使用的代码什么也没做。任何帮助,将不胜感激。
func removeAds() {
let viewController: GameViewController = GameViewController()
viewController.canDisplayBannerAds = false
}
最佳答案
您的代码无法正常运行的原因是,您正在创建一个新的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)
关于ios - 从SKScene移除iAds,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33181941/