Назначение UIViewController

В настоящее время я изучаю Objective-C, исходя из опыта работы с Java, где у меня нет проблем с созданием приложений с графическим интерфейсом. Таким образом, мой взгляд на некоторые из этих проблем может быть немного неправильным. Вот вопрос (извините за треп) -

Какова цель UIViewController?

Приведу конкретный пример. Предположим, вы создаете приложение с одним представлением, которое использует набор виджетов с графическим интерфейсом. Вы можете выложить их вручную в коде или использовать InterfaceBuilder. На других языках, таких как Java и HTML, я всегда кодирую вещи вручную и не использую инструменты графического интерфейса, так как обнаружил, что они не позволяют мне выполнять требуемую настройку. Сказав это, Я слышал, что InterfaceBuilder - это сладость (а специалисты делают это вручную?). Допустим, я размещаю кучу виджетов в файле XIB, а затем хочу загрузить этот UIView в коде.

Мне кажется (я ошибаюсь?), Что один потребности использует UIViewController, чтобы иметь правильное определение UIView, но для моих приложений мне не нужен сам контроллер (давайте на минутку оставим MVC в стороне). Итак, мне нужно создать UIViewController для этого простого приложения с одним представлением?

Давайте расширим это до случая приложения с двумя UIView. В этом случае у меня есть приложение с двумя представлениями, одно из которых полностью настраиваемое, без виджетов (drawRect, вот и я), а другое представление - тастичное (настройки и т. д.). Я хочу иметь возможность поменять местами представления, одно из которых я создал в IB, а другое - чистый код. Я создаю пользовательский UIView следующим образом:

eyesView = [[EyesView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];")

В случае просмотра виджетов я использую:

settingsView = (SettingsView *)[[[UIViewController alloc] initWithNibName:@"SettingsView" bundle:nil] view];

Но я не могу найти способ разбудить XIB без использования этого фиктивного UIViewController, который мне не нужен. Это возвращает меня к исходному вопросу - какова цель UIViewController? Неужели Apple добавила лишь тонкости, позволяющей разработчикам легко запускать и запускать панели навигации и тому подобное (я так не думаю)?

Есть ли лучший способ сделать все это?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
0
4 287
1

Ответы 1

UIViewController - это де-факто класс контроллера, в котором находится ваша бизнес-логика должен (здесь или в других классах в стиле контроллера). Если вы не знакомы с шаблоном проектирования модель-представление-контроллер, вам следует прочитать об этом.

В любом случае, да, если вы десериализуете материал из пера, вам нужен объект, который действует как владелец файла, и, за исключением случая MainMenu.xib, этот объект почти наверняка должен быть подклассом UIViewController. Я не могу придумать ни одной причины, по которой вы хотели бы опустить UIViewController.

Технически можно загрузить перо вручную, используя архитектуру загрузки перьев нижнего уровня, но вам все равно понадобится объект некоторый, чтобы действовать как владелец файла, и нет веских причин для этого, если вы действительно точно не знаете, что вы делает. Тем более, что UIViewController дает вам много бесплатных услуг, например, он управляет памятью для всех корневых объектов в пере для вас, и он может выгружать свое представление под давлением памяти, если оно не используется (а затем повторно загружать его, когда оно получает доступ снова).

Другие вопросы по теме