Могу ли я использовать Интерфейсный Разработчик, чтобы ввести зависимости между несколькими кончиками? - PullRequest
5 голосов
/ 17 марта 2011

Я привык предоставлять зависимости для моих объектов извне. Интерфейсный Разработчик - инструмент, который помогает сделать это, но я не могу заставить его работать с несколькими кончиками. Как только я разбил основной наконечник на несколько файлов, я больше не могу устанавливать соединения между объектами в разных наконечниках. Использование File Owner не очень помогает, поскольку позволяет передавать только один объект в перо.

Пример:

enter image description here

Здесь A и B - некоторые объекты более высокого уровня, а C и D - некоторые виды услуг более низкого уровня. Пока все объекты находятся внутри одного большого кончика (первая картинка), все в порядке. Но когда я разделяю перо для разделения A и B, у меня возникают проблемы с подключением их к C и D. (Очевидно, я не хочу создавать два экземпляра C и D, я хочу, чтобы и A, и B говорили с одним и тем же C и D без использования синглтона.)

Возможно ли это сделать в Интерфейсном Разработчике? Как?

Ответы [ 2 ]

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

Объекты в вашем .nib соответствуют вашему слою вида, верно? В разархивированном виде они принадлежат выбранному вами контроллеру, который является посредником между вашими услугами и вашим представлением.

Было бы очень необычно иметь какие-либо низкоуровневые сервисы или любые виды зависимостей в архиве в вашем файле .nib.

1 голос
/ 28 июля 2017

Вы должны использовать внешние объекты. В вашей XIB добавить внешний объект. Вы можете найти его в библиотеке объектов. Используйте его как обычный объект (торговые точки и т. Д.). Поскольку существует внешний объект, он не будет создан в процессе разархивирования, вам следует создать его самостоятельно. Затем вы загружаете перо программно:

NSArray*    topLevelObjs = nil;
NSDictionary*    proxies = [NSDictionary dictionaryWithObject:self forKey:@"AppDelegate"];
NSDictionary*    options = [NSDictionary dictionaryWithObject:proxies forKey:UINibExternalObjects];
topLevelObjs = [[NSBundle mainBundle] loadNibNamed:@"Main" owner:self options:options];

Подробнее о файлах перьев: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW24

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