2016-12-13 3 views
1

Если ViewControllerA встроен в navigationController, а ViewControllerB представлен Модиально ViewControllerA.Представленный ViewController ViewController неправильно настроен?

При печати свойства представления ViewControllerB в представленииViewController я обнаружил, что presentingViewController указывает на контроллер навигации, а не на ViewControllerA.

Но я думаю, что если presentingViewController указывает на ViewControllerA более разумным.

+0

Это происходит потому, что viewController A встроен ** внутри ** a 'UINavigationController' – Rikh

+0

, но, основываясь на документах presentingViewController, он просто заявляет, что «когда вы представляете контроллер представления по модулю (явно или неявно) с помощью метода presentViewController: анимированный: завершение: представленный контроллер представления имеет это свойство, установленное на контроллер вида который представил его « – ximmyxiao

ответ

2

Но я думаю, что если точка presentingViewController в ViewControllerA разумнее

Дело в том, что это не имеет значения, что вы думаете, это разумно. То, что вы видите, это то, как оно на самом деле работает. Ваша задача - принять и понять, не соглашаться с этим.

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

И на самом деле, ваш present отправлен для просмотра контроллера A передан по адресу в содержащий контроллер навигации. Вам разрешено указывать контроллеру A до present только в качестве своего рода удобства.

Посмотреть контроллер А называется Яблоком «источник» вид контроллера, потому что это контроллер представления, к которому present был послан, но нет никакого способа узнать, что от разговора для просмотра контроллер B.

(Возможно, вы захотите прочитать this section of my online book, начиная с предложения: «Представляющий контроллер представления ... не обязательно является контроллером вида, на который вы отправили presentViewController:animated:completion:». В моей книге я вызываю контроллер исходного вида оригинальным презентатором.)

+0

спасибо @matt, теперь я понимаю, presentingViewController может быть не таким же, как исходный контроллер – ximmyxiao

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