2011-10-15 41 views
0

我不明白爲什麼beginSheetModalForWindow不起作用。beginSheetModalForWindow方法錯誤

這裏是MyAppDelegate.h

@interface MyAppDelegate : NSObject <NSApplicationDelegate> { 
    NSWindow *window; 
} 

@property (assign) IBOutlet NSWindow *window; 

@end 

MyAppDelegate.m

@synthesize window; 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 

} 

@end 

內容在我的AppController.m我有幾行代碼

NSAlert *alert = [[[NSAlert alloc] init] autorelease]; 
     [alert setMessageText:@"Alert."]; 

     [alert beginSheetModalForWindow:window 
          modalDelegate:self 
         didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) 
          contextInfo:nil]; 

的問題是我得到一個錯誤:使用未聲明的標識符窗口。

我想念什麼?

+0

請檢查AppController.h文件中聲明的窗口。我懷疑問題只出現在.h文件中 –

回答

0

'window'是一個屬於你的MyAppDelegate實例的變量。爲了在AppController中使用相同的窗口變量,AppController需要對窗口的引用。我不確定這兩個類之間的關係是什麼,但是通常當一個類需要提供另一個類來引用其中一個實例變量時,引用會在方法調用中傳遞。例如,您可能會向AppController添加一個setWindow:方法,並讓MyAppDelegate調用該方法,並提供變量'window'