3

Чтение документации об изменениях в UIViewControllers в iOS, я пытаюсь выяснить, как взаимодействие между представлением контроллеров модального представления работает внутри настраиваемого контроллера представления контейнера. В конечном итоге то, что я хотел бы сделать, это надежно пройти через цепочку представленных контроллеров представлений, даже если некоторые из этих контроллеров представлены контроллерами детского вида.Взаимодействие между представлением/представлением контроллеров просмотра и контроллерами родительского/дочернего просмотра, документально написанными в любом месте?

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

Итак, мой вопрос сводится к тому, что происходит, когда кто-то пытается представить контроллер вида с контроллера детского вида?

[childViewController presentViewController:viewController animated:YES completion:nil]; 

Поскольку представлен контроллер представления предназначен для «взять на себя» взаимодействие, пока не будет прекращен, то имело бы смысл мне, что запрос на презентацию будет вперед к родителю (или на самом деле, до цепи parentViewControllers пока он не достигнет контроллера вида без родительского контроля), а затем отобразится с этого контроллера. В противном случае кажется, что разработчик может делать такие вещи, как современные модальные контроллеры представлений от двух разных детей и т. Д., Которые мне кажутся проблематичными. (Например, какой представлен диспетчер представлений, например?).

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

[childViewController presentedViewController]; 

Было бы nil, потому что родитель показывает его? Или этот запрос может быть отправлен родителям, так что parentViewController и любой из его childViewControllers будут иметь одинаковые результаты?

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

ответ

2

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

Я не могу найти на нем никакой документации, поэтому вы не можете положиться на нее на 100%.

+0

Твой и мой опыт тот же. Спасибо за ответ. –

1

Dr.Touch имеет отличный пост именно на том, что:

http://www.cocoanetics.com/2012/04/containing-viewcontrollers/

это необходимо прочитать, если вы в View Controller контейнеры

+0

Это хороший пост о том, как создавать контроллеры контейнеров, но, к сожалению, у него нет никакого контента, связанного с моим вопросом. Начиная с iOS 5, UIViewController имеет два набора apis, один для установки иерархии parent-child и один для «представления» контроллера вида из другого. Мой вопрос связан с взаимодействием между этими двумя API. Это сообщение в блоге обсуждает только первую из этих тем и не упоминает второй. –

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