Шаблон навигации в порядке. Однако я бы сделал это немного по-другому, подражая волшебнику.
Ваш первоначальный корневой контроллер представления должен представить первый вопрос: когда пользователь выбирает его, вы помещаете в стек новый контроллер представления, отвечающий за обработку ответа. Когда пользователь отвечает на вопрос, вы открываете контроллер представления, уведомляя ваш корневой контроллер представления. Вы можете сделать это, используя протокол и делегата или используя уведомление. После получения уведомления или при вызове метода делегата контроллер корневого представления готовит следующий вопрос.
Повторяйте этот цикл до тех пор, пока пользователь не ответит на последний вопрос, затем ваш корневой контроллер представит пользователю окончательный результат.