NSWindow, созданное в IB, не будет отображаться в приложении модально - PullRequest
1 голос
/ 27 октября 2010

У меня есть приложение, которое при нажатии кнопки должно показывать модальное окно. У меня есть несколько вопросов по этому поводу, но я собираюсь ограничить это тем, что вызывает у меня головную боль.

Я хочу добавить, что я уже делаю что-то похожее, что применительно к этому конкретному случаю не будет работать. Что я уже делаю, так это модально показываю NSOpenPanel. Это код для этого.

Этот код находится внутри приложения Delegate.

-(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. Я создал windowcotroller, который слушает кнопку (testButton). Вот код:

@interface BrowserWindowController : NSWindowController {
}
-(IBAction) testButton:(id) sender;
@end

Я установил, что владельцем файла xib-файла является класс BrowserWindowController, и связал кнопку с кнопкой test.

Вернуться к приложению. При нажатии кнопки я хочу показать эту панель модально. Вот код:

- (IBAction) respondToBrowseAction:(id) sender {
browsePanel = [[BrowserWindowController alloc] initWithWindowNibName:@"BroserWindow"];
}

Я не вижу никакой функции в API, такой как NSOpenPanel, чтобы показывать это окно модально.

Спасибо всем, кто может ответить.

1 Ответ

0 голосов
/ 27 октября 2010

Причина, по которой нет NSWindow API для модального запуска, заключается в том, что это приложение, которое переходит в модальный режим.См. Как работают модальные окна и Введение в листы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...