обработчик завершения для представления ViewControllerAsSheet OSX - PullRequest
0 голосов
/ 26 июня 2018

Я представляю NSViewController из другого ViewController.

[self presentViewControllerAsSheet:secondViewController];

вот метод NSWindow

- (void)beginSheet:(NSWindow *)sheetWindow 
 completionHandler:(void (^)(NSModalResponse returnCode))handler;

Существует ли какой-либо эквивалентный метод выше Для NSViewController с обработчиком завершения.

1 Ответ

0 голосов
/ 27 июня 2018

Этого достаточно?

class SOMEViewController: NSViewController {
    private var parentWindow : NSWindow? = nil

    public func beginSheetModal(for parentWindow: NSWindow, 
                                handler : @escaping (NSApplication.ModalResponse) -> Void) {
        self.parentWindow = parentWindow
        guard let sheet = self.view.window else { return }

        parentWindow.beginSheet(sheet, completionHandler: handler)
    }

    public func endSheet(_ response : NSApplication.ModalResponse) {
        guard let parent = self.parentWindow else { return }
        guard let sheet = self.view.window else { return }

        parent.endSheet(sheet, returnCode: response)
    }
...