gpt4 book ai didi

swift - 如何更改窗口的内容 View ?

转载 作者:搜寻专家 更新时间:2023-11-01 05:40:12 25 4
gpt4 key购买 nike

我正在开发一个 mac osx 应用程序,它具有从主 Storyboard启动的初始窗口和 View Controller 。我想用我的 View 替换 Storyboard加载的内容 View 。我正在这样做 -

func replaceContentView() {
parentViewController = MainViewController(nibName: "MainContainerView", bundle: nil)!
let fullScreenFrame = NSScreen.mainScreen()?.visibleFrame
self.initialWindow.setFrame(fullScreenFrame!, display: false, animate: false)
self.initialWindow.contentView = parentViewController! . view
}

这种方法的问题是默认的 View Controller 永远不会被释放。默认 viewController 的 deinit() 根本不会被调用。这导致内存泄漏。那么如何完全删除默认内容 View 和关联的 View Controller 呢?

最佳答案

Storyboard不处理 View ,它们处理 View Controller 。 Storyboard在将 View 加载到窗口时所做的是创建一个 NSViewController 然后去

windowController.contentViewController = theViewController

这也隐含地插入了 theViewController.view 作为窗口的内容 View 。照样做,一切都会好起来的。

Marek 的例子是错误的,因为 CustomView 不应该是一个 NSView 子类,它应该是一个拥有包含 View 的 CustomViewController 类标签等。作为奖励,NSViewController 也会为您加载 XIB。

或者,您可以设置 windowController.contentViewController = nil(这将删除旧的 View Controller 及其内容 View ),然后设置您的内容 View 。但实际上,当 NSViewController 的目的恰恰是它时,为什么还要与框架抗争呢?

关于swift - 如何更改窗口的内容 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31583605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com