Как отправить сообщение на parentViewController, который является подклассом UIViewController? - PullRequest
2 голосов
/ 16 мая 2011

У меня есть UIViewController (MyViewController) и другой контроллер представления, который я представляю модально, хотя MyViewController (назовите его SecondViewController).Я хочу иметь возможность отправить сообщение в MyViewController из SecondViewController с помощью

[self.parentViewController hideSecondViewController];

Но так как parentViewController определен как UIViewController, а hideSecondViewController не является методом UIViewController, я получаю предупреждение, говорящее «UIViewControllerможет не отвечать на «hideSecondViewController» ».Это работает нормально, потому что МОЖЕТ успешно отправить сообщение во время программы, но так как я #import SecondViewController в MyViewController, я не могу #import MyViewController в SecondViewController.Есть ли способ обойти это?

Ответы [ 2 ]

3 голосов
/ 16 мая 2011

Было бы лучше перепроектировать вашу архитектуру, как предложено albertamg, но это должно работать:

[self dismissModalViewControllerAnimated: YES];

вы можете вызвать dismiss для обоихконтроллер представления и представления, и он будет делать то же самое.

3 голосов
/ 16 мая 2011

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

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

Подробнее читайте в Руководстве по программированию контроллера представления для iOS .


P.S .:

, так как я #import SecondViewController в MyViewController я не могу #import MyViewController в SecondViewController.

Для решения проблемы циклической зависимости вы можете использовать предварительное объявление .

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