Модальные Листы & Модальные Возвращаемые Значения - PullRequest
0 голосов
/ 15 февраля 2012

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

NSModalSession session = [NSApp beginModalSessionForWindow:aWindow];
for (;;)
    if ([NSApp runModalSession:session] != NSRunContinuesResponse)
        break;
[NSApp endModalSession:session];

Это сделало мой код очень чистым, но есть одна проблема: если я сделаю это, лист больше не будет находиться перед строкой меню (я использовал NSStatusWindowLevel, чтобы получить этот эффект).

У кого-нибудь есть решение для этого? Я хочу избежать селекторов типа «конец-конец», поскольку они делают код очень грязным. Спасибо!

1 Ответ

3 голосов
/ 01 ноября 2012

У меня была та же проблема, и я обнаружил, что мне нужно установить уровень окна в цикле сеанса, чтобы он работал.В вашем случае что-то вроде:

NSModalSession session = [NSApp beginModalSessionForWindow:aWindow];
for (;;) {
    [mySheet setLevel: NSStatusWindowLevel];
    if ([NSApp runModalSession:session] != NSRunContinuesResponse)
    break;
}
[NSApp endModalSession:session];
...