gpt4 book ai didi

xcode - 错误无法将 UIView 类型的值转换为 SKview

转载 作者:行者123 更新时间:2023-11-28 08:57:30 25 4
gpt4 key购买 nike

自从我在 iAds 中添加后,我一直收到此错误。 “无法将‘UIView’ (0x196afa530) 类型的值转换为‘SKView’ (0x19685f560)。”

这是失败的代码,底部的代码是我的内部 View Controller 代码……并不多。我认为 at 也与此 iAds 代码有关。

    var interstitialAdView: UIView = UIView()

代码:

 override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
let skView = self.view as! SKView
self.canDisplayBannerAds = true
skView.showsFPS = false
skView.showsNodeCount = false
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
let scene: SKScene = GameScene(size: skView.bounds.size)
skView.presentScene(scene)
}
}

所有 ViewController 代码:

  import UIKit
import StoreKit
import SpriteKit
import GameKit
import iAd

extension SKNode {
class func unarchiveFromFile(file : String) -> SKNode? {
if let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") {
var sceneData = NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe, error: nil)!
var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)

archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as! GameScene
archiver.finishDecoding()
return scene
} else {
return nil
}
}

}

class GameViewController: UIViewController, ADInterstitialAdDelegate{
var interstitialAd:ADInterstitialAd!

var interstitialAdView: UIView = UIView()
override func viewDidLoad() {
super.viewDidLoad()


loadInterstitialAd()

ADBannerView()


func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController!)
{
gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)
}




var localPlayer = GKLocalPlayer()

localPlayer.authenticateHandler = {(viewController, error) -> Void in

if (viewController != nil) {
let vc: UIViewController = self.view!.window!.rootViewController!
vc.presentViewController(viewController, animated: true, completion: nil)
}

else {
println((GKLocalPlayer.localPlayer().authenticated))

}
}





}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
let skView = self.view as! SKView
self.canDisplayBannerAds = true
skView.showsFPS = false
skView.showsNodeCount = false
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
let scene: SKScene = GameScene(size: skView.bounds.size)
skView.presentScene(scene)



}

}



override func shouldAutorotate() -> Bool {
return true
}

override func supportedInterfaceOrientations() -> Int {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return Int(UIInterfaceOrientationMask.AllButUpsideDown.rawValue)
} else {
return Int(UIInterfaceOrientationMask.All.rawValue)
}
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}

override func prefersStatusBarHidden() -> Bool {
return true
}

func loadInterstitialAd() {

interstitialAd = ADInterstitialAd()

interstitialAd.delegate = self





}



func interstitialAdWillLoad(interstitialAd: ADInterstitialAd!) {



}



func interstitialAdDidLoad(interstitialAd: ADInterstitialAd!) {







interstitialAdView = ADBannerView()

interstitialAdView.frame = CGRectZero

self.interstitialAdView.frame = CGRectMake(0, self.view.frame.size.height-self.interstitialAdView.frame.size.height, self.interstitialAdView.frame.size.width, self.interstitialAdView.frame.size.height)

interstitialAdView.backgroundColor = UIColor.clearColor()

self.view .addSubview(interstitialAdView)





interstitialAd.presentInView(interstitialAdView)

UIViewController.prepareInterstitialAds()

}



func interstitialAdActionDidFinish(interstitialAd: ADInterstitialAd!) {

interstitialAdView.removeFromSuperview()



}



func interstitialAdActionShouldBegin(interstitialAd: ADInterstitialAd!, willLeaveApplication willLeave: Bool) -> Bool {

return true

}



func interstitialAd(interstitialAd: ADInterstitialAd!, didFailWithError error: NSError!) {
println(" iAds Did Fail with Error")


}



func interstitialAdDidUnload(interstitialAd: ADInterstitialAd!) {

interstitialAdView.removeFromSuperview()

}



}

最佳答案

同样的事情发生在我身上。您所要做的就是将所有 iAd 代码传输到您的 GameScene.swift 并将 self 更改为 self.view!.window!.rootViewController!哪里有错误。

关于xcode - 错误无法将 UIView 类型的值转换为 SKview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32724055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com