2015-10-17 78 views
2

我目前正在嘗試將IAP添加到我的SKScene中,像這樣Swift Sprite Kit In App Purchase 但我在解決如何將self.canDisplayBannerAds設置爲false以避免我的skscene出現問題。任何幫助,將不勝感激。從SKScene刪除iAds

func removeAds() { 

     let viewController: GameViewController = GameViewController() 

     viewController.canDisplayBannerAds = false 
    } 

回答

2

爲什麼你的代碼是不工作的原因是因爲你正在創建一個新的GameViewController和設置上canDisplayBannerAds。

您需要保留對原始GameViewController的引用,您應該可以通過場景SKView從場景中訪問它。

如果你不想子類化你的SKView,你可以使用下面的命令來獲取當前的viewController。

if let viewController = view.nextResponder as? GameViewController /* or whatever your VC is */ { 
    viewController.canDisplayBannerAds = false 
} 

如果您SKView是一個子視圖改變view.nextResponderview.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) 
+0

我明白了。我怎麼能這樣做呢?我想使用self.view?.canDisplayBannerAds = false,但這不起作用,因爲顯然'SKView類型的值沒有成員canDisplayBannerAds' –

+0

張貼了一些代碼,給它一個,沒有測試它,但應該工作。 –

+0

不幸運的是 –