Как связаны файлы * .xib, * .m и * .h? - PullRequest
3 голосов
/ 12 марта 2010

Как / где в коде файл nib связан с его файлами * .m и * .h?

В частности, я имею в виду, когда вы создаете новый класс Objective-C, не используя метод initWithNibName.

Где бы это отношение не определялось, оно, очевидно, используется отношением «Владелец файла» в Интерфейсном Разработчике. Я предполагаю, что это файл * .plist где-то или что-то.

Ответы [ 3 ]

5 голосов
/ 13 марта 2010

Файлы NIB описывают экземпляры классов.

Когда вы перетаскиваете компонент в NIB с помощью Interface Builder, фактически вы создаете экземпляр.

Если вы перетаскиваете, например, UIViewController и определяете подклассUIViewController в ваших OWN классах с .m и .h, вы сможете сказать создателю интерфейса: «используйте мой пользовательский подкласс UIViewController для этого экземпляра объекта».

Это достигается в интерфейсекомпоновщик с Tools / Identity Inspector, а затем Class identity: здесь вы можете разместить свои собственные классы, которые косвенно ссылаются на ваши собственные .h и .m

3 голосов
/ 13 марта 2010

NIB-файлы описывают интерфейс.Они созданы из файлов XIB.Файлы XIB являются текстовыми (точнее, XML), а NIB - двоичными.Обычно вы редактируете файлы XIB в Интерфейсном Разработчике, и они компилируются в NIB по мере создания проекта.

.h файлы содержат интерфейсы классов.Интерфейсный Разработчик использует их для составления списка классов Objective C в вашем приложении, а также для создания списка выходов и действий, которые они предоставляют.При разработке XIB вы обычно предоставляете один из ваших классов ViewController в качестве владельца файла.Интерфейсный Разработчик будет сканировать файл .h и создавать из него список выпусков / действий. Файлы

.m содержат код.Они не используются Интерфейсным Разработчиком напрямую.Но они могут и часто содержат код, который загружает эти файлы NIB.И, конечно же, они содержат код обработчиков действий.

0 голосов
/ 13 марта 2010

Хотя вопрос помечен как ответ, я не вижу ответа на вопрос ...

Обычно сам код определяет отношение при создании контроллера представления, например:

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];

Это говорит системе о создании экземпляра контроллера представления и поиске «MyView.xib» для загрузки и подключения к MyViewController - MyViewController также был бы установлен в качестве владельца файла в XIB.

Теперь еще один способ связать ваш контроллер представления и xib, это то, что в некоторых случаях вы фактически создаете экземпляры контроллера представления в xib. Контроллер панели вкладок - отличный пример, где для вкладки вы указываете экземпляр контроллера представления, который будет создан, вместе с именем пера, который он будет использовать.

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

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