UIView不会投射到SKView

我一直试图在我的Sprite Kit游戏中实现游戏中心,但每次我尝试呈现排行榜…

-(void)showLeaderboard:(UIViewController*)gcvc { GKGameCenterViewController *leaderboardController = [[GKGameCenterViewController alloc] init]; if (leaderboardController != NULL) { leaderboardController.leaderboardIdentifier = @"Game_Leaderboard"; leaderboardController.viewState = GKGameCenterViewControllerStateLeaderboards; leaderboardController.gameCenterDelegate = self; UIViewController *vc = self.view.window.rootViewController; [vc presentViewController: leaderboardController animated: YES completion:nil]; } } 

游戏崩溃在启动时出现错误:

[UIView setShowsDrawCount:]:无法识别的select器发送到实例0x178169e40(lldb)

我查了一下相关的问题,他们都提出把IB的View类改成SKView类,但是没有运气。 exception断点停在行:

 SKView *spriteView = (SKView *)self.view; spriteView.showsDrawCount = YES; 

该视图显然是SKViewtypes,但仍然表示spriteView是UIViewtypes。 我不确定这是否应该是重要的,因为游戏的主视图控制器是UIViewController的一个子类,这是呈现Game Center排行榜所需要的,所以我不知道如何解决这个错误。

经过很多调整之后,显然有一些代码的问题。 UIViewController *vc = self.view.window.rootViewController; 因为我已经通过视图控制器作为参数,而不是遵循苹果代码创buildSKView,我简单地连接了一个IBOutlet并摆脱了SKView *spriteView = (SKView *)self.view; 我甚至从来没有想过改变viewDidLoad方法,所以谢谢你们!

对于它的价值,我通常从主UIViewController获取SKView,如下所示:

 /// Returns the Director's own view, but as a SKView *. @property (weak, readonly) SKView * skview; // ... - (SKView *) skview { return (SKView *)self.view; }