【问题标题】:Launching ViewController as sheet from windowDidLoad从 windowDidLoad 启动 ViewController 作为工作表
【发布时间】:2018-05-06 11:50:01
【问题描述】:

我试图在窗口加载后立即将情节提要显示为工作表。

override func windowDidLoad() {
    super.windowDidLoad()
    let storyboard = NSStoryboard(name: NSStoryboard.Name(rawValue: "Init"), bundle: nil)
    let controller = storyboard.instantiateInitialController() as! NSViewController
    self.window!.contentViewController?.presentViewControllerAsSheet(controller)
}

很遗憾,工作表显示在位置不正确且位于窗口后面。 当我在按钮内运行相同的代码时,一切正常。

Screenshot

加载窗口后如何正确显示情节提要表?

【问题讨论】:

  • 我不是 mac 开发人员,但我认为 windowDidLoad 不是显示其他窗口的正确位置。可能您应该等到显示给定窗口后再显示其他窗口,可能在contentViewController 中的viewDidAppear
  • @Sulthan 你说得对,谢谢 - 我在窗口生命周期中使用了错误的函数。在contentViewControllerviewDidAppear 中运行代码确实有效! (如果你将它作为一个发布,我会批准你的 awnser)
  • 然后发布了答案。这只是一个猜测,因为我不了解 MacOS 生态系统。

标签: swift macos cocoa viewcontroller


【解决方案1】:

我对 iOS 生态系统有更多了解,但我认为您应该仅在显示原始窗口后才显示新窗口。 windowDidLoad 在视图加载时调用,而不是在视图显示时调用。

因此,您可能应该将您的代码放入viewDidAppearcontentViewController 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-18
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多