Правильный ответ: «Ты делаешь это неправильно ™»; -)
Вам не нужно ссылаться на контроллер представления из представления, и вы, конечно, никогда не должны сохранять контроллер представления в одном из ваших представлений - иначе у вас останется цикл сохранения и утечка памяти.
Какао предоставляет несколько шаблонов для решения этой проблемы:
Используйте делегата: Определите протокол с именем DemoViewDelegate и добавьте свойство делегата в DemoView. Затем попросите ваш контроллер представления реализовать этот протокол. Важно: делегатов никогда не следует оставлять! Любое созданное вами свойство делегата должно быть установлено на assign
. См. Документы о делегировании Apple или просто Google "Шаблон делегирования".
Используйте цепочку респондента: Вызовите UIApplication sendAction:to:from:forEvent:
и оставьте to:
установленным на nil
, чтобы ваше сообщение действия автоматически перенаправлялось по цепочке респондента вашему контроллеру представления. См. Документы Apple Responder и более подробные Документы действий сообщения .
Используйте уведомление: Реже встречается в этом конкретном сценарии, но вы также можете настроить контроллер представления на прослушивание уведомления, которое отправляет представление.