またまた、しくじりました。SpriteKitがさくっと簡単で楽しい感じだったので、よーし、入門用の記事を書くぞ〜〜と決めて、どうせなら、広告表示用のViewを確保した状態で書いた方がいいぞと思ってごにょごにょしたら。
下記のエラーに遭遇しちゃいました。
-[UIView presentScene:]: unrecognized selector sent to instance 0xa3600b0
2013-11-17 16:05:23.974 *** Terminating app due to uncaught exception ‘NSInvalidArgumentException’,
reason: ‘-[UIView presentScene:]: unrecognized selector sent to instance 0xa3600b0′
トレースしていくと、showsFPS というフレームレートを出す部分でからんで出てくるようだ。たぶんきっかけにしか過ぎないんだろうけど。
このエラーの原因の根本は、ViewController.mの
1 |
SKView * skView = (SKView *)self.view; |
を
1 |
SKView * skView = (SKView *)self.spriteKitView; |
変えたところにありました。
ViewControllerにヘッダー用、SpriteKit用、広告用の新しくViewを3つ追加して、SpriteKit用ViewでのみSpriteKitを動かそうという魂胆です。
直し方は、わかれば簡単。ソースをいじるのではなく、StoryBoard をいじります。
SpriteKit用のテンプレートで初めたから全く気がついていませんでしたら、ViewController.view の CustomClass にはあらかじめ SKView が関連づけられていました。下記画像をクリックしてもらうと大きく表示されてわかりやすいです。
SKView を self.view から self.spriteKitView に変えたので、この最上位Viewの CustomClass から SKView を消して、空白にします。
続いて、SpriteKitを反映させたい spriteKitView を選択して、 CustomClass に SKView を設定します。
これで、ビルドし直して、実行すれば問題なくなりました。
これで、View別にSpriteKitを埋め込むなんて言うことも可能ですね
おわり
コメント