我为我的应用程序创建了一个自定义目标c委托,它打开了一个首选项窗口,我首先为pref窗口类初始化并分配内存(包含id <PrefWindowDelegate> delegate;
)然后我将pref.delegate = self;
设置为我的主app控制器。
首选项窗口视图控制器类有- (void)windowWillClose:(NSNotification *)notification
,此时我只使用[delegate windowHasClosed];
但是似乎委托没有指向pref控制器类初始化时设置的同一委托在- (void)windowWillClose
被执行时。
我该如何解决这个问题?
在首选项窗口控制器的头文件中
id <PreferenceWindowDelegate> delegate;
在实施文件中:
- (void)windowWillClose:(NSNotification *)notification {
[delegate windowDidClose];
NSLog(@"Pref window closed");
}
在app控制器中:
- (void)PrefWindowClosed {
NSLog(@"Preference window closed");
prefWindowOpen = false;
}
标题:
@interface appControllerDelegate : NSObject <NSApplicationDelegate, PreferenceWindowDelegate>
PreferenceWindowViewController *pref2;
[NSBundle loadNibNamed:@"PreferenceWindow" owner:pref2];
prefWindowOpen = true;
- (void)windowDidClose {
prefWindowOpen = false;
}
- (IBAction)openPrefWindow:(id)sender {
if(!isRegistered) {
return;
}
if(pref2 == nil){
pref2 = [[PreferenceWindowViewController alloc] init];
pref2.delegate = self;
[NSBundle loadNibNamed:@"PreferenceWindow" owner:pref2];
prefWindowOpen = true;
}
}
当用户点击“首选项”菜单项
时调用