游戏中心排行榜 - 无法将 GKLeaderboardViewController 委托设置为自身(CCLayer)
Game Centre Leaderboard - Can't set GKLeaderboardViewController delegate to self (CCLayer)
由于尝试将 GKLeaderboardViewController 委托设置为调用实例而导致的错误,以下代码将无法编译。
错误信息是:
Assigning to 'id<UINavigationControllerDelegate>' from incompatible type 'MainMenu *'
其中 MainMenu 是 CCLayer 类型。
如果赋值语句(leaderboard.delegate = self)被注释掉,代码会编译,排行榜会显示,但不会在按下"done"按钮时调用回调。
这是代码:
- (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];
}
}
顺便说一下,这是我的 header object 声明:
#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
由于尝试将 GKLeaderboardViewController 委托设置为调用实例而导致的错误,以下代码将无法编译。
错误信息是:
Assigning to 'id<UINavigationControllerDelegate>' from incompatible type 'MainMenu *'
其中 MainMenu 是 CCLayer 类型。
如果赋值语句(leaderboard.delegate = self)被注释掉,代码会编译,排行榜会显示,但不会在按下"done"按钮时调用回调。
这是代码:
- (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];
}
}
顺便说一下,这是我的 header object 声明:
#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