что IB делает за сценой, когда я связываю IBoutlets / IBActions? - PullRequest
2 голосов
/ 16 марта 2011

Я новичок в Mac dev, xcode, IB и т. Д. Я понимаю, как создавать простые приложения и базовые функции перетаскивания в IB, но я не знаю, что и где IB делает с объектами.

Второй вопрос: как написать MVC без использования IB?

Ответы [ 2 ]

2 голосов
/ 16 марта 2011

Когда вы соединяете два объекта в IB с помощью IBOutlet или IBAction, он создает некоторые специальные теги в XIB (то есть XML).

Когда пакет ( обновление : извините, это не пакет, а UINib) читает NIB (который компилируется XIB), он ищет такие теги и объекты, на которые они ссылаются.После этого:

  • Для торговых точек он использует KVC (Key-Value Coding) для установки соответствующего свойства принимающего объекта.

  • Для действий, которые он вызываетaddTarget:action:forControlEvents: на объекте управления.

Вы можете создавать приложения iPhone любой сложности без IB, создавая и настраивая объекты в своем коде, но в большинстве случаев это просто неуместно.

Дополнительная литература - Руководство по программированию ресурсов

0 голосов
/ 16 марта 2011

Насколько я знаю, XIB-файлы из IB - это некие архивы, в которых хранятся ваши объекты и их свойства. Когда вы отправляете -initWithNibName, объекты не архивируются. В общем, вы могли бы - если бы вы знали, как - создавать свои собственные файлы XIB, и они должны работать. Обратите внимание, что при загрузке UIViewController без указания файла XIB загружается файл XIB с тем же именем, что и у вашего класса. См. Статью Википедии .

К вашему второму вопросу: вы можете создать любой объект, который вы добавите, используя IB программно. Как правило, это UIView подклассы, которые вы инициализируете с помощью initWithFrame:. Затем вы устанавливаете нужные вам свойства. Наконец, вы добавляете их в свой вид, используя addSubview. IBActions в основном Пары цели / действия . Например, если вы добавляете UIBarButtonItem, вы используете initWithBarButtonSystemItem:target:action:. Установка действия аналогична установке соединения IBAction в IB.

Вы должны иметь возможность создавать любой пользовательский интерфейс, который вам нужен, программно, однако обычно это требует много работы по сравнению с использованием IB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...