Ответ 1
presentViewController
предлагает механизм отображения так называемого модального контроллера вида; то есть контроллер представления, который будет полностью контролировать ваш пользовательский интерфейс, будучи наложенным поверх верхнего контроллера.
UINavigationController
предлагает гораздо более гибкий механизм, в котором вы можете нажать новый контроллер, а затем поместить его, чтобы вернуться к предыдущему, упорядоченным способом. Представьте, что контроллеры в контроллере навигации будут просто строить последовательность слева направо.
Я думаю, что presentViewController
наиболее подходит для использования только с одним контроллером представления. Вы можете с уверенностью использовать его для складывания большего количества контроллеров представлений один поверх другого (и, следовательно, своего рода "имитировать" навигационный контроллер плохого человека), но моя ставка заключается в том, что вы быстро найдете что-то не работающее, как вы ожидали.
В частности, примером такого ограничения является следующее: когда вы отклоняете контроллер модального представления (чтобы "закрыть" его), все ваши представленные в режиме просмотра представления контроллеры (от одного и того же контроллера представления) также будут уволены по адресу один раз. Таким образом, вы просто не сможете реализовать функцию "вернуться" /навигации как таковой.
Итак, это зависит от того, что вы пытаетесь сделать.