不能closures从SKScene提供的GKGameCenterViewController

我正在从SKScene展示一个GKGameCenterViewController。 这是我的代码:

-(void)showLeaderboardAndAchievements:(BOOL)shouldShowLeaderboard{ GKGameCenterViewController *gcViewController = [[GKGameCenterViewController alloc] init]; gcViewController.viewState = GKGameCenterViewControllerStateLeaderboards; gcViewController.leaderboardIdentifier = _leaderboardIdentifier; // _spriteViewController references an UIViewController [_spriteViewController presentViewController:gcViewController animated:YES completion:nil]; } 

我没有提出窗口的问题,但我无法设法让用户closures它。 我实现了方法gameCenterViewControllerDidFinish但是函数根本不被调用。 我必须做什么以便用户可以closures排行榜?

我通过添加行gcViewController.gameCenterDelegate = _spriteViewController;

 -(void)showLeaderboardAndAchievements:(BOOL)shouldShowLeaderboard{ GKGameCenterViewController *gcViewController = [[GKGameCenterViewController alloc] init]; gcViewController.viewState = GKGameCenterViewControllerStateLeaderboards; gcViewController.leaderboardIdentifier = _leaderboardIdentifier; gcViewController.gameCenterDelegate = _spriteViewController; // er // _spriteViewController references an UIViewController [_spriteViewController presentViewController:gcViewController animated:YES completion:nil]; } 

虽然它的工作,我得到了警告: Assigning to 'id<GKGameCenterControllerDelegate>' from incompatible type 'UIViewController *__weak'

对于任何人在这种情况下,问题只是_spriteViewControllerUIViewControllertypes,改变我的自定义类固定的问题。 你也可以像这样声明引用ViewController的属性:

 UIViewController <GKGameCenterControllerDelegate> *_spriteViewController;