由於嘗試將GKLeaderboardViewController委託設置爲調用實例而導致錯誤,因此以下代碼無法編譯。Game Center排行榜 - 無法將GKLeaderboardViewController委託設置爲自我(CCLayer)
的錯誤信息是:
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
我在做什麼錯?任何幫助感謝!
這是正確的,我相信。 – PKCLsoft
賓果!非常感謝 - 工作。不知道我是如何錯過的。 – TinoK