Думайте о IB как о Создателе объектов, а не о генераторе кода. Это действительно помогает. На самом деле IB создает экземпляры объектов по мере их перетаскивания в окно рабочего стола / представления / XIB. Затем он позволяет начать создавать различные соединения (с помощью перетаскивания мышью) от одного объекта к другому. Затем вы создаете экземпляр всего XIB, разархивируя его из вашего пакета. Это очень автоматический режим, и чтение UIViewController должно вас немного продвинуть. Посмотрите на:
initWithNibName:bundle:
У вас в основном два типа соединений:
Выход: это то, как вы учите один объект существованию другого объекта. Например, у вас может быть объект контроллера, которому нужен доступ к кнопке. Вы создаете розетку (либо в текстовом редакторе XCode в области файла / свойства controller.h, либо в IB, добавляя розетку) в своем контроллере, а затем перетаскиваете, удерживая нажатой клавишу Control, из розетки на кнопку.
Действия: так вы инициируете событие на одном объекте для вызова метода на другом объекте. Действия будут иметь прототип:
- (IBAction) someMethod:(id) sender;
Я думаю, что ": (id) sender" является необязательным, если вашему методу не нужна ссылка на объект, вызывающий событие.
В IB вы можете упорядочивать объекты и устанавливать различные атрибуты, такие как размер, цвет, положение, цель / действия, взаимодействие с пользователем, владелец файла ...
Это подводит меня к владельцу файлов. Большая концепция здесь. Как правило, это контроллер, который загружает NIB (ОК: у меня есть собственный оконный контроллер, которым я пользуюсь более 15 лет, но у Apple есть действительно хороший UIViewController, который делает все возможное.) И действует как прокси в IB. На самом деле он не создается в IB, но это происходит, когда вы выделяете и запрашиваете его для загрузки NIB (файлы XIB - это файлы XML, которые в процессе компиляции преобразуются в файлы NIB)