gpt4 book ai didi

swift - macOS 应用程序,例如 macOS 上的 Photos.app

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:50 25 4
gpt4 key购买 nike

我正在尝试创建一个 macOS 应用程序,例如 Photos.app。 NSWindowController 有一个带分段控件的工具栏。当您点击分段控件时,它会更改 NSWindowController 中的 NSViewController

Example of Apple Photos.app.

到目前为止,我拥有的是一个带有 NSViewControllerNSWindowController。我对 NSWindowController 进行了子类化,其中我拥有每当用户点击分段控件时都会调用的方法。

本质上,无论单击什么片段,它都会实例化所需的 View Controller 并将其设置为 NSWindowControllercontentViewController 属性。

enter image description here

这是正确的做法吗?

此外,我认为 NSWindowController 应该具有每个 NSViewController 的属性,它可以切换到延迟加载(当用户点击它们时加载)并且它们会被重新使用以防止重新初始化)。

代码:

import Cocoa

class MainWindowController: NSWindowController
{
var secondaryViewController:NSViewController?

override func windowDidLoad()
{
super.windowDidLoad()

// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
}

@IBAction func segmentedControlDidChange(_ sender: NSSegmentedControl)
{
print("Index: \(sender.selectedSegment)")

if sender.selectedSegment == 3 {
if secondaryViewController == nil {
let viewController = storyboard?.instantiateController(withIdentifier: "SecondaryViewController") as! NSViewController
secondaryViewController = viewController
}

self.window?.contentViewController = self.secondaryViewController
}
}
}

我是 macOS 开发的新手,但是,我从事 iOS 已经有一段时间了。如果有更好的方法,我想知道。谢谢!!!

最佳答案

要将选项卡/分段控件移动到标题栏,您需要:

  1. 将工具栏添加到窗口,并将控件添加到工具栏,
  2. 隐藏标题:

    class TopLevelWindowController: NSWindowController {

    override func windowDidLoad() {
    super.windowDidLoad()

    if let window = window {

    // reminder like style
    // window.titlebarAppearsTransparent = true
    window.titleVisibility = .hidden
    // window.styleMask.insert(.fullSizeContentView)
    }
    }
    }
  3. 现在,工具栏将合并到顶部栏位置。

关于swift - macOS 应用程序,例如 macOS 上的 Photos.app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44357420/

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