2012-04-25 6 views

답변

1

GKMatchRequest를 만든 후에는 findMatchForRequest를 호출해야합니다. findMatchForRequest의 완료 처리기에서 새 일치의 matchData 속성에 게임 레벨을 저장할 수 있습니다.

1

GKTurnBasedMatchmakerViewController를 사용하여 automatch/invite UI를 표시합니다. GKMatchRequest을 만들 때,이 같은 GKTBMVC에 (AN의 NSNumber로 포장)을 ObjC 관련 playerGroup 값을 추가합니다

GKMatchRequest *request = [[GKMatchRequest alloc] init]; 
request.playerGroup = somePlayerGroup; 
GKTurnBasedMatchmakerViewController *mmvc = [[GKTurnBasedMatchmakerViewController alloc] initWithMatchRequest:request]; 
objc_setAssociatedObject(mmvc, 
         &kPlayerGroupKey, 
         [NSNumber numberWithInteger:request.playerGroup], 
         OBJC_ASSOCIATION_RETAIN); 

[myViewController presentViewController:mmvc 
           animated:YES 
          completion:nil]; 

그런 turnBasedMatchmakerViewController:didFindMatch: 대리자 메서드에서 나는 우리가 필요로하는 경기의 종류를 알 수 있도록 playerGroup 값을 읽어 설정하거나 가입 : 새로운 경기를 만들 때

- (void)turnBasedMatchmakerViewController:(GKTurnBasedMatchmakerViewController *)mmvc didFindMatch:(GKTurnBasedMatch *)match 
{ 
    [myViewController dismissViewControllerAnimated:YES 
              completion:^{ 
               NSNumber *n = objc_getAssociatedObject(mmvc, &kPlayerGroupKey); 
               NSInteger playerGroup = [n integerValue]; 
               [self switchToMatch:match matchKind:playerGroup]; 
              }]; 
} 

물론, 당신이 match.matchDataplayerGroup를 저장할 수 있지만, 때로는 매치 메이킹 뷰 컨트롤러를 전달하는 데 더 편리합니다.

관련 문제