Но я думаю, что если точка presentingViewController в ViewControllerA разумнее
Дело в том, что это не имеет значения, что вы думаете, это разумно. То, что вы видите, это то, как оно на самом деле работает. Ваша задача - принять и понять, не соглашаться с этим.
Контроллер навигации представляет собой контроллер представления, потому что он является контроллером корневого представления. Это полноэкранная презентация, поэтому навигационный контроллер является контроллером представления, вид которого заменяется представлением контроллера представления.
И на самом деле, ваш present
отправлен для просмотра контроллера A передан по адресу в содержащий контроллер навигации. Вам разрешено указывать контроллеру A до present
только в качестве своего рода удобства.
Посмотреть контроллер А называется Яблоком «источник» вид контроллера, потому что это контроллер представления, к которому present
был послан, но нет никакого способа узнать, что от разговора для просмотра контроллер B.
(Возможно, вы захотите прочитать this section of my online book, начиная с предложения: «Представляющий контроллер представления ... не обязательно является контроллером вида, на который вы отправили presentViewController:animated:completion:
». В моей книге я вызываю контроллер исходного вида оригинальным презентатором.)
Это происходит потому, что viewController A встроен ** внутри ** a 'UINavigationController' – Rikh
, но, основываясь на документах presentingViewController, он просто заявляет, что «когда вы представляете контроллер представления по модулю (явно или неявно) с помощью метода presentViewController: анимированный: завершение: представленный контроллер представления имеет это свойство, установленное на контроллер вида который представил его « – ximmyxiao