由于尝试将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
我究竟做错了什么?任何帮助表示赞赏!
最佳答案
我相信您正在寻找的是leaderboardDelegate
属性而不是delegate
属性。 leaderboardDelegate
需要<GKLeaderboardViewControllerDelegate>
,而delegate
需要<UINavigationControllerDelegate>
,因此会出现错误消息。
检查苹果文档中的leaderboardDelegate
https://developer.apple.com/library/ios/documentation/GameKit/Reference/GKLeaderboardViewController_Ref/#//apple_ref/occ/instp/GKLeaderboardViewController/leaderboardDelegate
关于ios - 游戏中心排行榜-无法将GKLeaderboardViewController委托(delegate)设置为self(CCLayer),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29833605/