Вот один из способов взглянуть на это:
Последовательность контроллеров представления в пределах одного контроллера navatoin представляет единый рабочий процесс в голове пользователя. Если в какой-то момент вам нужно прервать текущий рабочий процесс и создать расходящийся рабочий процесс, вы создадите модальное диалоговое окно. Если новый рабочий процесс имеет только один шаг, вы просто представляете соответствующий контроллер, но если есть много шагов, вы создаете новый контроллер навигации, чтобы связать шаги вместе.
Визуальные элементы различны: внимание пользователя контроллера навигации перемещается слева направо, а при модальном диалоге сверху вниз. Представьте, что вы переворачиваете книгу (слева направо), и в какой-то момент вы отодвигаете книгу от себя, а затем вытаскиваете другую книгу из-под стола и помещаете ее перед собой (сверху вниз), а затем начинаете просматривая эту другую книгу (слева направо). Затем вы закрываете всю вторую книгу и возвращаетесь к первой книге, на которой остановились.
Метод addSubview находится в другой плоскости абстракции - подпредставления используются для создания двух опытов, которые я описал выше. Вы можете использовать подпредставления, чтобы создать другой опыт, который будет на том же уровне абстракции. Еще пара примеров конструкций на том же уровне - UIAlertView и UIActionSheet.