Как установить для владельца файла пера объект в другом файле пера? - PullRequest
2 голосов
/ 16 мая 2011

Я новичок в Какао, и у меня проблемы с разбиением моего файла пера на несколько файлов пера.

My MainMenu.nib содержит объект Tracker Controller, который является подклассом NSObject. В моем главном меню есть пункт меню Show Tracker.

Мой TrackerWindow.nib имеет класс Владелец файла, установленный на TrackerController, и имеет выходы в окно и просмотр в этом файле пера.

Я не уверен, как сделать владельца файла второго пера прокси для экземпляра TrackerController в первом пине. (Полагаю, мне нужен экземпляр TrackerController в первом кончике, чтобы я мог использовать IB для установки выхода пункта меню.)

Я делаю это неправильно? Если да, то как я могу использовать IB для установки выходов для одного и того же объекта в нескольких файлах пера? Если нет, то как я могу сделать так, чтобы Владелец файла второго пера указывал на TrackerController, который я уже создал в первом пике?

1 Ответ

2 голосов
/ 16 мая 2011

Это написано с точки зрения разработчика iOS (с использованием контроллеров представления). Я не уверен, чем Mac OS X отличается, но не должно быть трудно пересаживать идеи.

<ч />

Самый простой способ установить владельца файла для пера - это предоставить его в качестве аргумента loadNibNamed:owner:options::

[[NSBundle mainBundle] loadNibNamed:@"Tracker" owner:trackerController options:optionsDict];

В приведенном выше фрагменте предполагается, что trackerController является экземпляром UIViewController. Если это не так, используйте следующее решение.

<ч />

Вместо использования initWithNibName:bundle: создайте TrackerViewController следующим образом (где trackerController является ссылкой на существующий объект TrackerController):

NSDictionary *proxyDict = [NSDictionary dictionaryWithObject:trackerController forKey:@"trackerController"];
NSDictionary *optionsDict = [NSDictionary dictionaryWithObject:proxyDict forKey:UINibExternalObjects];
TrackerViewController *trackerViewController = [[[TrackerViewController alloc] init] autorelease];
[[NSBundle mainBundle] loadNibNamed:@"Tracker" owner:trackerViewController options:optionsDict];
// Display trackerViewController

Создайте внешний объект с идентификатором trackerController в Tracker.nib и подключите свои выходы / действия к этому объекту.

...