Spadict, здесь есть несколько вещей не так. Во-первых, я забочусь о банальных придирках меньше, чем большинство людей, но это помогает понять язык правильно. На самом деле это так. Пойдем медленно ..
Если у вас есть класс ControlsViewController (обратите внимание на верхний регистр C), вы можете использовать его в любое время. Вы можете создать столько экземпляров , сколько захотите. Чтение документации для UIViewController (я предполагаю, что ControlsViewController - это класс, который вы написали, и что это подкласс UIViewController) говорит нам, что назначенный инициализатор - -initWithNibName: bundle: . Это означает, что обычно мы будем использовать это так: -
ControlsViewController *controls = [[ControlsViewController alloc] initWithNibName:@"aNib" bundle:nil];
Другой способ создания экземпляра класса - использование Interface Builder. В Интерфейсном Разработчике вы можете создать столько экземпляров любого Класса, сколько захотите, настроить их свойства, а затем сохранить их как есть, настроенные так, как вам нравится, в файл пера. Это хороший способ создания экземпляров графического интерфейса пользователя, окон, кнопок, представлений и т. Д., Поскольку вы можете визуально манипулировать позициями и размерами, а также можете добавить кнопку к представлению или представление к окну, перетаскивая его мышью - что проще, чем кодирование.
Файл .nib сопоставим с файлом .zip. Нас не волнует файл .nib, нам важны экземпляры объектов, которые мы заархивировали внутри него. Мы не разархивируем файл .nib, мы разархивируем объекты, которые мы создали с помощью Interface Builder и затем заархивировали как файл nib.
Каждый раз, когда мы загружаем файл пера, мы воссоздаем объекты внутри него, какими они были при сохранении пера. В качестве примера: - в Интерфейсном Разработчике я создаю Окно и устанавливаю его цвет фона на черный, а его ширина - 600 пикселей. Я сохраняю его в наконечнике (в этом наконечнике есть один оконный объект, но нет ограничений на количество объектов или тип).
Когда я запускаю приложение, я загружаю .nib 5 раз. Теперь у меня есть 5 окон с черным фоном шириной 600 пикселей.
Назначенный инициализатор UIViewController принимает имя пера в качестве первого аргумента. Когда мы создаем экземпляр UIViewController, он вызывает '-loadView', чтобы загрузить перо, которое мы передаем, разархивируя объекты внутри. Вам никогда не нужно вызывать '-loadview', и использование пера никоим образом не является альтернативой этому методу.
Таким образом, представление может быть создано программно или с помощью Interface Builder, а затем загружено из пера. Ни один из них "не включает в себя рисование вида программно". Если у вас есть вид, вы можете сказать ему рисовать, и вы можете делать это 50 раз в секунду, или вы можете делать это один раз, но это отдельная операция.