2015-05-06 9 views
0

Я читаю книгу, в которой говорится, что контроллер представления источника не обязательно является представлением контроллера представления. Источником VC является тот, который вызывает метод presentViewController:..., а представленный VC (его вид) является тем, который закрывается представленным представлением VC. Я не могу придумать ни одного примера, в котором представленный VC не совпадает с исходным VC. Пожалуйста, предоставьте некоторые. БлагодаряКонтроллер представления источника против представления контроллера представления

Текст из книги:

«Оригинальный ведущий: Контроллер вид, к которому presentViewController: анимированные: завершение: было отправлено. Apple иногда ссылается на этот контроллер представления как на источник; «Оригинальный докладчик» - мой собственный термин. Представленный контроллер просмотра установлен в качестве представленного визуализатора оригинального презентатора.

Представляющий контроллер вида: Представленный контроллер представления представленийViewController. Это контроллер вида, представление которого заменяется или покрывается представлением представления представления. По умолчанию это контроллер представления, представление которого представляет собой весь интерфейс, а именно контроллер корневого представления или уже существующий представленный контроллер представления. Возможно, это не то же самое, что оригинал. Представленный контроллер представлений задан как представленный диспетчер представлений представления. Таким образом, представленный контроллер представления может представлять собой представленный контрольный контроллер двух разных контроллеров представлений ».

ответ

3

Я задал себе тот же вопрос, узнав о переходах контроллера зрения, особенно при попытке понять метод из протокола UIViewControllerTransitioningDelegate. Борьба шла о разнице между аргументами presentingController и sourceController.

Я нашел ответ в View Controller Programming Guide. Вы можете найти следующее в представления с контроллерами модально раздел:

Контроллер вид, который вызывает presentViewController: анимированные: завершение: метод не может быть один , который фактически выполняет модальное представление. Стиль презентации определяет, как должен отображаться этот контроллер представления, включая характеристики , необходимые для контроллера представления. Например, для примера полноэкранное представление должно быть инициировано полноэкранным контроллером просмотра . Если текущий контроллер представления представления не соответствует , UIKit просматривает иерархию контроллера вида, пока не найдет один , который есть. По завершении модальной презентации UIKit обновляет presentingViewController и представляет свойстваViewController для управляемых контроллеров представлений .

Это означает, что концепция контроллера «источника» не является чем-то случайным образом созданным автором упомянутой вами книги.

+0

О, я вижу. Представленные VC и источник VC являются одинаковыми, если представляющий VC способен представить контроллер вида. Отлично, чтобы прояснить это – brumbrum

0

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

Для начала нет такой концепции «источника» в контроллерах просмотра. У вас есть parentViewController и childViewControllersтолько, когда речь заходит о Container View Controllers. И у вас есть presentingViewController и presentedViewControllerтолько, когда речь заходит о presenting View Controllers modally.

У вас также есть контроллеры просмотра, основной целью которых является управление другими контроллерами представлений, а именно контроллером навигации, контроллером панели вкладок, контроллером разделенного представления и контроллером представления Popover. Таким образом, любой заданный контроллер просмотра может запросить себя, если он «подключен» к контроллеру навигации, например.

Что я предполагаю, ваша книга подразумевает, что Source VC будет тем, что делает другой VC появляться на экране. В этом смысле это правильно. «Источник» может отличаться от представленного VC. Возьмите этот фрагмент:

[self presentViewController:aViewController animated:YES completion:nil];

В приведенном выше примере, представляющий VC также "источник" VC. Но здесь:

[someViewController presentViewController:anotherViewController animated:YES completion:nil];

Мы вызываем метод на какой-то VC, лежащий где-то проходящее еще один VC в качестве аргумента. Таким образом, в этом случае , представляющий VC, является someViewController, а представлен VC - anotherViewController. Если эта строка кода находится внутри третьего VC, тогда третий VC будет «источником».

Но это все! Этот последний фрагмент кода, возможно, даже не находится внутри контроллера просмотра, поэтому немного странно думать о «исходных VC».

+0

Прежде всего, спасибо за ваш ответ. Я понимаю, что вы имеете в виду, но я не уверен, что это то, что автор имел в виду. Я редактировал свой вопрос с помощью фрагмента текста из книги, чтобы мы могли быть на одной странице. – brumbrum

+0

@ krompir2 Существует свойство UIStoryboardSegue, называемое sourceViewController, это то, о чем говорит автор? – rdelmar

+0

нет, речь идет о представлении/представлении контроллеров представления. Перфапы мы должны спросить Мэтта, так как он автор: D – brumbrum

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

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