2013-04-11 2 views
3

Я пытаюсь внедрить пошаговое приложение, и нет никаких проблем с отправкой данных поворота, но я не вижу возможности автоматически получать данные. До сих пор, я узнал, что много:GKTurnBasedMatch получает данные

  • Существует GKTurnBasedEventHandlerDelegate -Протокол. Его легко реализовать, но где я устанавливаю, чтобы этот объект был делегатом того, чем он должен быть делегатом? Он, кажется, не является делегатом от GKTurnBasedMatch, или GKTurnBasedMatchmakerViewController, или GKMatchMaker.

  • Существует также метод GKTurnBasedMatch, который называется loadMatchDataWithCompletionhandler, но, насколько я понимаю, это только раз, когда вы вроде есть инстинктивное чувство, что матч должен быть обновлен. Как мне узнать, что он должен быть обновлен? Должен ли я запускать эту функцию каждую секунду или около того?

Заранее спасибо.

UPDATE: Я установил [GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate как статический экземпляр, который реализует GKTurnBasedEventHandlerDelegate. Он до сих пор не вызван.

ответ

3

Вы можете установить его ниже заявление, становится делегатом совместно, например:

[[GKTurnBasedEventHandler sharedTurnBasedEventHandler] setDelegate:self]; 

Вам не нужно вызывать loadMatchDataWithCompletionhandler вручную на самом деле, когда один из участников называют endTurnWithMatchData все остальные участники будут уведомлены через GKTurnBasedEventHandler метод делегата:

-(void) handleTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive:(BOOL)didBecomeActive 

Вот где вам необходимо обновить пользовательский интерфейс. Остерегайтесь того, что симулятор не поддерживает методы делегатов GKTurnBasedEventHandler, они вызываются только на реальных устройствах.

+0

На самом деле, я в настоящее время запускаю это на симуляторе. Жаль, что он там не работает. – arik