2013-06-05 17 views
1

我正在開發基於回合的遊戲套件遊戲。我想提出一個自定義用戶界面爲玩家參與了比賽。我用GKTurnBasedMatch參與者QuitOutOfTurnWithOutcome

loadMatchesWithCompletionHandler: 

有一種情況,用戶是在比賽中的使用情況,它不是輪到自己拿到比賽,他們希望退出並且不再在遊戲列表中看到該匹配。我的代碼調用

participantQuitOutOfTurnWithOutcome:withCompletionHandler: 

並從表視圖中刪除該行。

此時其他球員得到之交,看到他們的對手已經退出

match.remoteParticipant.matchOutcome == GKTurnBasedMatchOutcomeQuit 

,使他們結束與調用遊戲

endMatchInTurnWithMatchData:completionHandler: 

的問題是,遊戲中仍然存在在遊戲中心。所以打電話

loadMatchesWithCompletionHandler: 

第一個玩家的應用程序將把它拉​​下來,並顯示在遊戲表中。

我能想到的唯一解決方案是保存匹配表中的匹配id和黑名單。似乎有點狡猾。

看來這裏沒有API。即退出並刪除匹配我匹配的列表。有沒有更好的方法來處理這種情況,只能使用Game Center API?

回答

2

我相信你需要將每個參與者的matchOutcome屬性設置爲GKTurnBasedMatchOutcomeNone之外的值,然後才能刪除匹配項。從文檔:

調用此方法結束所有球員的比賽。此方法只能由>當前參與者調用。在您的遊戲調用此方法之前,存儲在參與者屬性中的每個>參與者對象上的matchOutcome屬性必須已設置爲大於GKTurnBasedMatchOutcomeNone的值。