-1

Я довольно новичок в ООП и шаблонах дизайна, но однажды я реализовал шаблон Singleton, чтобы передать статические массивы и строковые объекты между разными ViewControllers.Вопрос о одиночных играх в Cocoa Touch

Мне было интересно, есть ли у меня все ViewControllers, чтобы прослушивать жест или событие, а затем выполнить некоторый код, как только появится этот жест/событие. Я думал либо использовать объект UIGestureRecognizer, либо метод motionBegan класса UIResponder.

Я уже получил эту работу, создав новый класс UIWindow, разместив там код и изменив класс MainWindow.xib на мой пользовательский класс. Это работает, и это приятное решение, но мне все еще интересно, есть ли способ внедрения этого решения (например, одиночные игры), отличного от IB.

Заранее спасибо за руководство.

Образец кода очень популярен!

ответ

1

Вы подклассифицировали UIWindow? Это очень редко. Читайте об объекте делегата UIApplication и шаблоне делегата в целом. Это основной синглтон вашего приложения в Cocoa.

Если вы не хотите, чтобы передать его вокруг, вы всегда можете получить делегировать приложения по телефону

[[UIApplication sharedApplication] delegate] 
+0

Вы определенно не хотите подклассифицировать 'UIWindow' - или даже использовать его как новичок, установить корневой контроллер для окна и сделать с ним – bshirley

+0

Я рассмотрю это - я думаю, что Я хочу сделать это невозможно, кроме подкласса UIWindow или просто отказаться от реализации этой функции. Благодаря! – ArtSabintsev

+0

Другая мысль: вы должны прочитать о UIResponder и цепочке ответчиков: [этот вопрос] (http://stackoverflow.com/questions/3356863/how-do-i-add-the-uiapplicationdelegate-to-the-end-of -упользователь-цепочка) может быть полезным подходом. – benzado

0

Если вы хотите много несвязанных объектов/контроллеры должны быть уведомлены о одном событии, вы можете запускайте его, как вам нравится (цель/действие с помощью элемента управления (ов)) или распознавателя жестов).

Возможно, вы захотите изучить NSNotificationCenter и NSNotification, у вас может быть несколько объектов для уведомления о событии/изменении.

+0

Можно ли это сделать, не добавляя слишком много кода в существующее приложение? Я написал ошибку-репортера, которая запускается при событии shake, который я сохранил в подклассе UIWindow. Все, что я делаю сейчас, - это подключение в Interface Builder для доступа к этому новому окну, и доступен код трясти-события. Я сделал это так, чтобы я мог вернуть код обратно в режим без отладки без особых усилий (сменив соединение на UIWindow). – ArtSabintsev

Смежные вопросы