Как сделать действие в одном представлении закрыть себя и открыть другое представление? - PullRequest
2 голосов
/ 07 февраля 2011

Новичок в obj-c и какао, работа над простой игрой в качестве моего первого приложения (mac os x). У меня есть вид меню и вид игры:

MenuView.h / м
MenuViewController.h / м
GameView.h / м
GameViewController.h / m

Я хочу, чтобы меню отображалось по умолчанию, а когда нажимается кнопка воспроизведения (которая находится в MenuView), я хочу, чтобы меню исчезло и игра появилась. Я понимаю действия и выводы, но я не знаю, с чего начать заставлять взгляды обмениваться. Любая помощь? Кажется, мне нужно каким-то образом заставить мой MenuViewController общаться с моим MainController?

Ответы [ 3 ]

1 голос
/ 11 февраля 2011

Питер Хоси,

Если вы рассматриваете MenuViewController как своего рода «основной» контроллер представления, в момент нажатия кнопки воспроизведения вы можете инициализировать экземпляр GameViewController:

- (IBAction)gameButtonClicked {

     GameViewController *game = [[GameViewController alloc] init];

     // we put the game view as the MenuViewController's view
     [self setView:game.view];
     [game release];

}

Конечно, вам нужно импортировать "GameViewController.h", чтобы получить к нему доступ.

1 голос
/ 14 февраля 2011

Поскольку вы хотите, чтобы ваш MenuViewController был тем, что вызывает и заботится о GameViewController, я бы предложил нечто похожее на то, что сказал Рафаэль.Попробуйте поместить экземпляр GameViewController в файл Interface Builder, но сделайте его скрытым.Когда они нажимают кнопку «Play», чтобы активировать игру, просто отправьте GameViewController вперед и сделайте его видимым.Это немного неуклюже, но это работает.Не забудьте скрыть все кнопки и взаимодействия, касающиеся вашего меню, хотя.Вы не хотите случайно активировать список рекордов во время игры!

Также я бы порекомендовал заглянуть в служебные приложения.(Это один из типов шаблонов, которые вы указали при создании нового проекта.) Они созданы для переключения между двумя отдельными контроллерами представления, и это может быть именно то, что вы ищете.

1 голос
/ 07 февраля 2011

Если вы хотите, чтобы они были в одном и том же окне и в одном и том же размере, вы можете поместить оба представления в представление вкладок таблиц.Просто переключите вкладку, чтобы выбрать вид, который виден.

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

...