2015-04-23 38 views
0

由於嘗試將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 

我在做什麼錯?任何幫助感謝!

回答

1

我相信你正在尋找的是leaderboardDelegate屬性,而不是delegate屬性。 leaderboardDelegate需要<GKLeaderboardViewControllerDelegate>,而delegate需要<UINavigationControllerDelegate>,因此是錯誤消息。

檢查蘋果文檔的leaderboardDelegate https://developer.apple.com/library/ios/documentation/GameKit/Reference/GKLeaderboardViewController_Ref/#//apple_ref/occ/instp/GKLeaderboardViewController/leaderboardDelegate

+0

這是正確的,我相信。 – PKCLsoft

+0

賓果!非常感謝 - 工作。不知道我是如何錯過的。 – TinoK

相關問題