我有一个应用程序,当按下按钮时,它应该显示一个模态窗口。我对此有一些疑问,但我会将其缩小到令我头疼的问题。
我想补充一点,我已经做了类似的事情,当应用于这种特殊情况时将无效。我已经做的是以模态方式显示NSOpenPanel。这是它的代码。
此代码位于appDelegate中。
-(IBAction) respondToPublishAction:(id) sender {
NSArray *fileTypes = [NSArray arrayWithObjects:@"xml", @"txt", nil];
NSOpenPanel *oPanel = [NSOpenPanel openPanel];
NSString *startingDir = [[NSUserDefaults standardUserDefaults] objectForKey:@"StartingDirectory"];
if (!startingDir)
startingDir = NSHomeDirectory();
//Setting the attributes
[oPanel setAllowsMultipleSelection:NO];
[oPanel setTitle:@"XML file for publishing services"];
[oPanel beginSheetForDirectory:startingDir file:nil types:fileTypes
modalForWindow:[self window] modalDelegate:self
didEndSelector:@selector(openPanelDidEnd:returnCode:contextInfo:)
contextInfo:nil];
}
现在我正在尝试做什么,那将无效
我创建了一个xib文件,它有一个HUD窗口(如何在IB中命名),就像一个NSPanel。我创建了一个窗口按钮,用于监听按钮(testButton)。这是代码:
@interface BrowserWindowController : NSWindowController {
}
-(IBAction) testButton:(id) sender;
@end
我将xib文件的文件所有者设置为BrowserWindowController类,并将按钮与testbutton链接。
单击按钮时返回appDelegate我想以模态方式显示此面板。这是代码:
- (IBAction) respondToBrowseAction:(id) sender {
browsePanel = [[BrowserWindowController alloc] initWithWindowNibName:@"BroserWindow"];
}
我没有看到像NSOpenPanel这样的API中的任何函数以模态方式显示此窗口。
对任何可能回答的人都是。
答案 0 :(得分:0)
没有用于模态运行的NSWindow API的原因是因为它是进入模态模式的应用程序。请参阅How Modal Windows Work和Introduction to Sheets。