2014-12-14 4 views
0

У меня есть игра организована следующим образом:SKScene Leaderboards

  1. меню (ViewController) - сделано в раскадровке - в котором я аутентификации игрока GameCenter и обеспечить кнопку, чтобы перейти к Leaderboards (это работает отлично)

  2. ViewController, в котором сделан SKScene, который начинает игру (GameScene)

  3. SKscene под названием GameOverScene, который появляется, когда игра проиграна.

Я хочу иметь кнопку на GameOverScene взять меня лидер

Это код, который я использовал в GameOverScene, чтобы показать лидер:

-(void)showLeaderboardAndAchievements:(BOOL)shouldShowLeaderboard{ 
GKGameCenterViewController *gcViewController = [[GKGameCenterViewController alloc] init]; 

gcViewController.gameCenterDelegate = self; 

if (shouldShowLeaderboard) { 
    gcViewController.viewState = GKGameCenterViewControllerStateLeaderboards; 
    gcViewController.leaderboardIdentifier = @"wurst.highscore"; 
} 
else{ 
    gcViewController.viewState = GKGameCenterViewControllerStateAchievements; 
} 
UIViewController *vc = self.view.window.rootViewController; 
[vc presentViewController:gcViewController animated:YES completion:nil]; 

}

Я запускаю этот кусок кода, когда соответствующая кнопка трогается, и ничего не происходит: я получаю ошибку журнала или предупреждение:

«Предупреждение: попытайтесь представить, чей взгляд не в иерархии окон!»

Почему она пытается представить его на MenuViewController, а не на GameViewController (который является ViewController, на которой SKScenes место?

Я бы очень признателен за помощь

ответ

0

В вашем случае есть разница между контроллер представления вашего представления и текущее окно. Я думаю, что лучше реализовать это с помощью метода делегата из вашей сцены на ваш контроллер представления. Пусть код контроллера представления представляет собой таблицу лидеров.

+0

Извините, что спросить, но как это сделать что? –

+0

Ознакомьтесь с некоторыми учебными пособиями по n et, [это, например] (http://www.alexefish.com/post/522641eb31fa2a0015000002). – Alexander

+0

Значит, вы говорите, что я должен добавить функцию showleaderboard в GameViewController и нажать кнопку из игрыOverScene, чтобы запустить ее через делегат? –