Несмотря на то, что в UIViewController есть слово «controller», я считаю, что большинство разработчиков iOS в настоящее время назначают UIViewController стороне MVC «Вид». UIViewController в основном относится только к конкретному представлению, плюс может также управлять его подпредставлениями (пока это не станет слишком запутанным, и не добавится контейнерное представление, позволяющее использовать вложенный UIViewController).
В MVC на iOS контроллер представления может быть легко загрязнен бизнес-логикой, управлением моделью и т. Д., Поэтому многие люди в шутку называют «MVC» в iOS как «Massive View Controller». Чтобы бороться с этим, рассмотрите возможность использования архитектуры MVVM вместо этого, которая не только сохраняет VC небольшими, но и перемещает бизнес-логику в отдельную «коляску», связанную с этим ViewController, которая называется ViewModel. Это позволяет проводить модульное тестирование бизнес-логики без участия пользовательского интерфейса, что делает тестирование намного более надежным, его легче читать и обслуживать. С учетом сказанного, создание этих 9 элементов управления по-прежнему будет принадлежать ViewController.
Что касается программного добавления UITextFields к вашему представлению против viewController, если это нужно сделать только для этой отдельной сцены, я бы вставил его в viewController. Если вы ожидаете, что захотите повторно использовать их набор в других сценах, то создание пользовательского представления или элемента управления, содержащего их, было бы лучше, как это обычно делается для пользовательских ячеек таблицы.
Наконец, попробуйте просто использовать перо или раскадровку для макета вашей сцены. Apple предоставила настолько много возможностей для компоновки и поддержки сцен с помощью перьев и раскадровок, что вы действительно упускаете возможность пойти по программному пути. Я нахожу очень редким, что я на стороне программного подхода. Предупреждения об автоматической компоновке в одном только InterfaceBuilder стоят для меня золота, и, поскольку Apple продолжает поднимать планку и менять правила компоновки, я не могу представить, что пытаюсь идти в ногу с программным обеспечением, когда не могу позволить себе тестировать каждое устройство и версию iOS сочетание. И да, возможно сделать MVVM с внедрением зависимостей и раскадровками. Я делаю это ежедневно.