2012-06-29 1 views
2

Я создаю MenuBar-приложение с несколькими всплывающими окнами, NSMenu и некоторыми обычными окнами для настроек и тому подобного. Я создал NSController, чтобы держать все содержимое StatusBar вместе и уведомлять всплывающее окно для открытия и закрытия. У всплывающего окна есть собственный PopupWindowController и xib-файл, который работает как шарм. Но я не могу заставить его работать с NSMenu (в моем случае он подклассифицирован как RightClickMenu)NSController с собственным xib-файлом, но без представления

В IB я создал другой .xib, называемый StatusBarController.xib (с StatusBarController как владелец файла) с меню и связанным это к розетке. ...

@class RightClickMenu; 
@interface StatusBarController : NSController <NSMenuDelegate> { 
    IBOutlet RightClickMenu *rightClickMenu; 
} 
@property (nonatomic, retain) RightClickMenu *rightClickMenu; 
... 

Мои AppDelegate имеет свойство IBOutlet StatusBarController и главный .xib, который связан с объектом NScontroller.

@class StatusBarController; 
@interface MyAppDelegate : NSObject <NSApplicationDelegate> { 
    IBOutlet StatusBarController *statusBarController; 
... 

Надеется, что вы можете помочь ...

приветствий

+0

Вы используете NSController для привязок? Это не ваш типичный контроллер; вы обычно используете его подклассы NSObjectCOntroller или NSArrayController. NSWindowControllers и NSVIewControllers вообще не связаны с NSController. – Vervious

+0

Хорошо. Я использую NSViewController для всплывающего окна, но я не уверен, как обращаться с StatusBarController. NSObjectController будет лучше, но он все еще не работает ... я зарегистрировал 'NSLog (@"% o ", self.rightClickMenu) => 0', но он, похоже, не загружен. Я попытался подклассировать StatusMenuContoller из NSViewController и зарегистрировал 'NSLog (@"% o ", self.view)', который дал мне идентификатор ... –

+2

Для печати объектов вам следует использовать '% @' вместо '% o'; попробуй это вместо этого? Кроме того, позвольте мне перефразировать: NSObjectControllers/NSArrayControllers/NSControllers не предназначены для использования в качестве контроллера графического интерфейса, а скорее как контроллер для привязок/данных ядра. Я бы подклассифицировал NSObject вместо этого, чтобы сделать StatusBarController, потому что это не похоже, что вы управляете представлением или окном с ним. Кроме того, извините, если я отвлекся, потому что я запутался в структуре вашего приложения/в чем проблема :) – Vervious

ответ

1

переменный! это отдушина, но ваша собственность не является

IB использует KVC для установки розеток и найти свое имущество, которое будет использовать _variable


BTW только в случае, если:

ты должен справиться с загрузкой самостоятельно ЗА ИСКЛЮЧЕНИЕМ, если вы подклассифицируете NSViewController

в init контроллера вы делаете [[NSBundle mainBundle] loadNibName: @ "bla" owner: self];

Смежные вопросы