我使用了这个来源http://www.cats.rwth-aachen.de/library/programming/cocoa
创建自定义工作表。
我在现有.xib文件中创建了一个NSPanel
对象,并与IBOutlet
我的源代码:
·H
@interface MainDreamer : NSWindow <NSWindowDelegate>
{
...
NSPanel *newPanel;
}
...
@property (assign) IBOutlet NSPanel *newPanel;
的.m
@dynamic newPanel;
...
//this method is wired with button on main window and calls a sheet
- (IBAction)callPanel:(id)sender
{
[NSApp beginSheet:newPanel
modalForWindow:[self window] modalDelegate:self
didEndSelector:@selector(myPanelDidEnd:returnCode:contextInfo:)
contextInfo: nil]; //(__bridge void *)[NSNumber numberWithFloat: 0]
}
//this method is wired with cancel and ok buttons on the panel
- (IBAction)endWorkPanel:(id)sender
{
[newPanel orderOut:self];
[NSApp endSheet:newPanel returnCode:([sender tag] == 9) ? NSOKButton : NSCancelButton];
}
//closing a sheet
- (void)myPanelDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
{
if (returnCode == NSCancelButton) return;
else{
return;
}
}
所以callPanel
工作正常,工作表出现,但我无法与工作表上的控件(带按钮)进行交互。它们不会对咔嗒声做出反应(即使是在视觉上)。
问题出在哪里?
答案 0 :(得分:0)
[newDreamPanel close];
applicationDidFinishLaunching
方法中的。我写它是因为我希望在主窗口启动时不会出现面板。
事实上,Visible At Launch
面板的属性应该在IB中激活。 close
方法也有效,但副作用是面板上的所有控件都无法使用。