Таблица лидеров Game Center — невозможно установить для себя делегата GKLeaderboardViewController (CCLayer)

Следующий код не будет компилироваться из-за ошибки, возникающей при попытке установить делегат GKLeaderboardViewController для вызывающего экземпляра.

Сообщение об ошибке:

Assigning to 'id<UINavigationControllerDelegate>' from incompatible type 'MainMenu *'

где MainMenu имеет тип CCLayer.

Если оператор присваивания (leaderboard.delegate = self) закомментирован, код скомпилируется, таблица лидеров будет отображаться, но обратный вызов не будет вызываться при нажатии кнопки «Готово».

Это код:

- (void) showLeaderBoard {

    // Show GC leaderboard

    GKLeaderboardViewController *leaderboard = [[GKLeaderboardViewController alloc] init];

    if (leaderboard != nil) {

        leaderboard.delegate = self;
        leaderboard.category = @"ldrbrd_ref";

        AppController *app = (AppController *)[[UIApplication sharedApplication] delegate];
        [[app navController] presentViewController:leaderboard animated:YES completion:nil];
    }
}

Кстати, это мой заголовок для объявления объекта:

#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "CCGameButton.h"

#import <GameKit/GameKit.h>

@interface MainMenu : CCLayer <CCGameButtonDelegate, GKLeaderboardViewControllerDelegate> {

}

+ (CCScene *) scene;

@end

Что я делаю неправильно? Любая помощь приветствуется!


person TinoK    schedule 23.04.2015    source источник


Ответы (1)


Я считаю, что вы ищете свойство leaderboardDelegate, а не свойство delegate. leaderboardDelegate требует <GKLeaderboardViewControllerDelegate>, а delegate требует <UINavigationControllerDelegate>, отсюда и сообщение об ошибке.

Проверьте документы Apple на наличие leaderboardDelegate https://developer.apple.com/library/ios/documentation/GameKit/Reference/GKLeaderboardViewController_Ref/#//apple_ref/occ/instp/GKLeaderboardViewController/leaderboardDelegate

person Chaikitty    schedule 24.04.2015
comment
Бинго! Большое спасибо - это сработало. Не знаю, как я это пропустил. - person TinoK; 24.04.2015