swift - Swift 中的 MacOS 菜单

标签 swift macos swift3 nsapplication

我希望在我的应用程序中创建一个菜单侧边栏,除了菜单之外,它还可以显示和控制 View Controller 。像下面这样: Target User Interface 我想避免使用 TableView 作为菜单,但我并不完全反对它。我尝试过使用 TableView 和 Container,以及 TabViewController,但我似乎都无法像上面那样。

感谢任何帮助,提前致谢。

最佳答案

灵感来自“你正在寻找的东西叫做 NSSplitViewController”

https://stackoverflow.com/questions/30720730/change-views-inside-nssplitviewcontroller

代码如下:

class MenuController: NSViewController {
    override func loadView() {
        super.loadView()
        tabViewController = parent?.childViewControllers[1] as! NSTabViewController! //The parent is the SplitView, so the child in the second view would be the TabViewController
    }
    @IBOutlet weak var FirstButton: NSButton!
    @IBOutlet weak var SecondButton: NSButton!

    var tabViewController = NSTabViewController()

    @IBAction func FirstView(_ sender: Any) {
        tabViewController?.selectedTabViewItemIndex = 0 //Now that the TabViewController is specified, one may set the current view controller within the tabview.
    }

    @IBAction func SecondView(_ sender: Any) {
        tabViewController?.selectedTabViewItemIndex = 1 //Shows the second view in NSTabViewController
    }
}

在图中,NSSplitViewController 有两个 childViewController;因此它是这些 Controller 的父级,并且可以通过两个 subview Controller 中的 parent? 方法进行访问。指定 tabViewController 后,您就可以设置其 selectedTabViewItemIndex[value],以切换 NSTabViewController 中的 View 。

关于swift - Swift 中的 MacOS 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48509477/

相关文章:

swift - 快速从 plist 中获取类型值

iOS 联系人框架 : How to fetch contacts by phone number

ios - Xcode 9 上的 GoogleMaps 崩溃

macos - 该应用程序已损坏,无法打开。删除该应用程序并从 App Store 重新下载

swift - 在 Swift 中动态引用 IBOutlet?

macos - 快速从包含特定字符串的数组中删除元素

Xcode 4,断点在 Mac OS 命令行工具的单元测试中不起作用

swift3 - 如何在 Swift 3 中使用 HTML 标签切换字符串以清除字符串

swift3 - 将 Realm 对象的 Swift 数组转换回 Realm 结果

Swift 泛型从数组中删除类实例