Как вы реализуете метод makeKeyAndOrderFront :? - PullRequest
0 голосов
/ 07 мая 2009

Я открываю новое окно и хотел бы реализовать метод makeKeyAndOrderFront: для окна мне было интересно, какой код мне нужно будет ввести, чтобы сделать это.

Вот часть кода, который я уже получил, чтобы открыть окно:

Файл 1 (Первый Контроллер)

#import "PreferenceController.h"


@implementation PreferenceController

- (id)init
{
    if (![super initWithWindowNibName:@"Preferences"])
        return nil;
    return self;
}
- (void)windowDidLoad
{
    NSLog(@"Nib file is loaded");
}

Файл 2 (Действие, открывающее окно)

#import "Prefernces_Delegate.h"
#import "PreferenceController.h"

@implementation Prefernces_Delegate

- (IBAction)showPreferencePanel:(id)sender
{
    // Is preferenceController nil?
    if (!preferenceController) {
        preferenceController = [[PreferenceController alloc] init];
    }
    NSLog(@"showing %@", preferenceController);
    [preferenceController showWindow:self];
}

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

Ответы [ 3 ]

4 голосов
/ 07 мая 2009

Вы не хотите реализовывать -makeKeyAndOrderFront:, вы хотите вызвать его в своем окне, чтобы вывести его на передний план и сделать его ключевым окном. Что делает ваш showWindow: метод?

2 голосов
/ 07 мая 2009

Где-то после [preferenceController showWindow:self];:

[self.window makeKeyAndOrderFront:self];

или вы имели в виду добавить метод в контроллер?

// you should use a different method name, cause it's not the
// controller that is made key and ordered front.
- (void)makeKeyAndOrderFront:(id)IBAction {
    [self.window makeKeyAndOrderFront:self];
}
0 голосов
/ 04 января 2011

Сообщение makeKeyAndOrderFront отправляется только после запуска основного цикла обработки событий [NSApp run]. Вы можете попытаться отправить сообщение из основного окна, реализовав метод viewWillDraw:

- (void)viewWillDraw
{
    [window makeKeyAndOrderFront: nil];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...