В данный момент я пытаюсь добавить сетевой многопользовательский режим в свою игру для iOS (в которой используется UIKit), используя gameKit / GameCenter для организации матчей. Я пытаюсь представить интерфейс сватов игрового центра, но с переменным успехом. У меня есть два контроллера представления (с соответствующими файлами .xib), mainMenuViewController
и onlineViewController
, а также файл с именем GCHelper.h
.
В CGHelper
У меня есть это:
- (void)findMatchWithMinPlayers:(int)minPlayers
maxPlayers:(int)maxPlayers
viewController:(UIViewController *)viewController
delegate:(id<GCHelperDelegate>)theDelegate
{
if (!gameCenterAvailable) return;
self.presentingViewController = viewController;
delegate = theDelegate;
[presentingViewController dismissModalViewControllerAnimated:NO];
GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = minPlayers;
request.maxPlayers = maxPlayers;
GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithMatchRequest:request];
mmvc.matchmakerDelegate = self;
[presentingViewController presentModalViewController:mmvc animated:YES];
}
Я использую эту функцию в своих представлениях, чтобы показать интерфейс поиска совпадений. Сначала я попробовал это в mainMenuViewController
, который является моим первым контроллером представления, использующим это:
[[GCHelper sharedInstance] findMatchWithMinPlayers:2 maxPlayers:2 viewController:self delegate:self];
И это работало нормально, но это не то место, где я хотел это сделать, поэтому я попробовал ту же самую вещь из onlineViewController
, и ничего не происходит, без ошибок, просто пустое представление onlineViewController.view
смотрит на меня. Я довольно новичок в этом, поэтому мне интересно, если это связано с тем, как я работаю с представлениями, вот код, который я использую для переключения с mainMenu
на другое представление:
-(IBAction)showOnlineView
{
OnlineViewController *onlineViewController = [[OnlineViewController alloc] initWithNibName:@"OnlineViewController" bundle:nil];
UIView *currentView = self.view;
UIView *theWindow = [currentView superview];
[currentView removeFromSuperview];
[theWindow addSubview:onlineViewController.view];
}
Любая помощь будет принята с благодарностью. Кроме того, я не уверен, как мне поступить с возвратом в главное меню, если пользователь нажимает «Отмена» (хотя это может стать самоочевидным, как только я получу эту работу, я просто подумал, что упомяну это в случае отсутствия знание с моей стороны делает очевидным, что я говорю обо всем этом неправильно).