Swift / Cocoa-如何使浮动窗口暂时不浮动?

时间:2019-06-19 11:25:45

标签: swift macos cocoa nswindow nsviewcontroller

我正在创建一个Mac App,其Window由NSWindowController控制。

WindowController.swift的代码:

class WindowController: NSWindowController {

    override func windowDidLoad() {

        super.windowDidLoad()
        self.window?.center()
    }
}

此窗口有两个NSViewControllers。一个是窗口本身附带的,另一个是通过单击按钮的表单搜索打开的。

ViewController.swift(主视图)的代码:

class ViewController: NSViewController {

    override func viewDidLoad() {

        super.viewDidLoad()
    }

    override func viewDidAppear() {

        self.view.window?.level = .floating
    }
}

ExecutionViewController.swift代码(通过segue打开的视图):

class ExecutionViewController: NSViewController {

    override func viewDidLoad() {

        super.viewDidLoad()
    }

    override func viewDidAppear() {

        self.view.window?.level = .floating
    }

如您所见,该应用程序是浮动的,可以正常运行,但实际上位于顶部。问题是,ExecutionViewController有一个用于启动进程的按钮。在此过程中,应用程序应暂时不浮动。像

//Time for non-floating reached
self.view.window?.level = .normal //works!
ViewController.view.window?.level = .normal //doesn't work!
//Time for non-floating ended

它使用segues进行了尝试,但这也不起作用。我假设ViewController将在此处重新加载并再次执行viewDidAppear。

我要搜索的基本上是将.view.window.level = .normal传递给主ViewController而不做其他事情的可能性。

我不确定,是否有可能。我们非常感谢您的帮助。

0 个答案:

没有答案