从 windowDidLoad 启动 ViewController 作为工作表
Posted
技术标签:
【中文标题】从 windowDidLoad 启动 ViewController 作为工作表【英文标题】:Launching ViewController as sheet from windowDidLoad 【发布时间】: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 你说得对,谢谢 - 我在窗口生命周期中使用了错误的函数。在contentViewController
的viewDidAppear
中运行代码确实有效! (如果你将它作为一个发布,我会批准你的 awnser)
然后发布了答案。这只是一个猜测,因为我不了解 MacOS 生态系统。
【参考方案1】:
我对 ios 生态系统有更多了解,但我认为您应该仅在显示原始窗口后才显示新窗口。 windowDidLoad
在视图加载时调用,而不是在视图显示时调用。
因此,您可能应该将您的代码放入viewDidAppear
的contentViewController
中。
【讨论】:
以上是关于从 windowDidLoad 启动 ViewController 作为工作表的主要内容,如果未能解决你的问题,请参考以下文章
如何从自定义 UITableViewCell 获取值到 ViewController?