如何设置 NSTabViewItem 的标识符?

How to set the identifier of an NSTabViewItem?

我想知道 NSTabView 何时切换到特定视图。为此,我用我的自定义 class 扩展了 NSTabViewController 以能够充当委托:

class OptionsTabViewController: NSTabViewController {
    override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
        print(tabViewItem!.identifier)
    }
}

这打印了看起来像指针内存位置的内容:

Optional(0x608000100e10)
Optional(0x6080000c36b0)

我想应该可以在界面构建器中的某处设置这些标识符,但我已经尝试在标记为 identifier 的不同文本字段中编写内容,并且仍然在控制台中获取这些内存位置值。

我也用过 print(tabViewItem!.label) 但它会在选项卡按钮中打印标签。

那么如何设置该标识符才能识别选项卡视图组件中哪个视图处于活动状态?

首先,您可以这样定义您的标识符:

然后在您的代码中您可以定义一个 enum 来检查哪个是当前选定的选项卡,执行如下操作:

enum YourTabs:String {
   case tab1
   case tab2
   case none
}

class ViewController: NSViewController, NSTabViewDelegate {
    @IBOutlet var tabView:NSTabView!

    public func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
        if let identifier = tabViewItem?.identifier as? String,
            let currentTab = YourTabs(rawValue: identifier) {
            switch currentTab {
            case .tab1:
                print("do something with tab1")
                break
            case .tab2:
                print("do something with tab2")
                break
            default:
                break
            }
        }
    }
}