客观c委托的问题

时间:2011-04-05 06:18:22

标签: objective-c cocoa class

我为我的应用程序创建了一个自定义目标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;
}
}

当用户点击“首选项”菜单项

时调用

0 个答案:

没有答案