Как я могу сообщить классу своему контроллеру представления, что что-то произошло? - PullRequest
0 голосов
/ 08 декабря 2010

У меня есть viewController, который запускает мой игровой вид.ViewController порождает экземпляры точек, которые подклассы из UIView, которые добавляются в качестве подпредставлений в представление viewController.В классе точек у меня есть определенное поведение, если к ним прикоснуться (touchesBegan), но я также хотел бы прикоснуться к точкам, чтобы добавить к партитуре, которая является свойством viewController, но я не вижу способа передать это безсмешные обходные пути.Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 09 декабря 2010

Почему оценка в первую очередь является свойством ViewController? Я вижу наличие свойства для метки, которая отображает оценку, но сама оценка относится к какому-то объекту модели.

Преимущество этого подхода заключается в том, что вы можете использовать Key-Value Observing (KVO), добавив свой ViewController в качестве наблюдателя объекта модели. Фактически, это в значительной степени то, для чего была разработана KVO: простой способ уведомить произвольное количество наблюдателей об изменении свойства.

Справка:
Справочник по протоколу кодирования значения ключа
Справочник по протоколу наблюдения значения ключа
Руководство по реализации объекта модели

0 голосов
/ 08 декабря 2010

Два варианта (но не единственные) - NSNotificationCenter и протокол делегата +.

NSNotificationCenter проще в реализации и использовании, но не идеален во всех случаях.ViewController будет вызывать addObserver, чтобы указать, что он заинтересован в каком-либо сообщении.Точки будут вызывать postNotificationName для отправки сообщения заинтересованным объектам.Обязательно вызовите removeObserver в dealloc viewController.

Делегат + протокол позволяет определить более жесткий, четко определенный, компилируемый или контролируемый во время выполнения интерфейс между объектами.Подробнее см. Протоколы на языке программирования Objective-C.

В вашем случае, я думаю, определение протокола является лучшим вариантом.ViewController сделает себя делегатом точечных объектов.Точечные объекты будут иметь свойство делегата и вызывать методы протокола через свойство делегата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...