Получение представления для ответа на сенсорное событие или сообщение родного брата - PullRequest
0 голосов
/ 26 июня 2009

Я уверен, что есть правильный способ сделать это, я новичок в цели-c и касании какао, поэтому я не знаю, что это такое.

У меня есть приложение, которое имеет (упрощенную) иерархию представлений

Window
  --Button
  --Button
  --Subview
    --Sub-Subview

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

  • Добавить выход в контроллер основного вида (обработка окна) и сохранить ссылку на подпредставление. Когда мне нужно подписаться на сообщение, я могу просто пропустить нужное сообщение (так как у меня уже есть ссылка). Это кажется работоспособным, если немного ... хрупким?

  • Добавьте второе действие к кнопке (первое - это метод в контроллере представления, второе - метод в классе подпредставления). Это кажется проблематичным, поскольку важно, чтобы действие кнопки в контроллере представления запускалось до , когда подпредставление пытается обработать сообщение

  • Какая-то система делегатов?

  • Напишите новый контроллер представления для подпредставления и попросите контроллер основного представления передать , что сообщение (не уверен, что первый контроллер может получить ссылку на второй. Кроме того, код, фактически необходимый для подпредставления, относительно невелик - целый новый контроллер кажется излишним).

  • Что-то еще, что я полностью пропускаю?

Какое-то направление будет оценено!

Ответы [ 2 ]

1 голос
/ 26 июня 2009

Вы говорите, что кнопка выполняет действие на контроллере представления (какой контроллер представления?). И вы хотите, чтобы вызов действия / метода для подпредставления происходил после этого действия. Поэтому я бы предложил вашему действию контроллера представления опубликовать уведомление о событии, и подпредставление может прослушать это событие. Кроме того, контроллер представления может иметь соединение с подпредставлением.

Это обеспечивает порядок действий - большинство методов наблюдения не гарантируют этот порядок.

Мэтт Галлахер написал полезную статью, Пять подходов к прослушиванию, наблюдению и оповещению в Какао о наблюдении техник, которые могут вам помочь.

0 голосов
/ 26 июня 2009

Для перспективы пуристов MVC вся логика должна быть в контроллере. Если у вас есть только один контроллер, то логика должна идти туда, а классы представления отвечают только за макет и отображение.

Или у вас может быть другой контроллер, вероятно, лучший выбор, если ваш интерфейс довольно сложный.

...