如何设置 NSTabViewItem 的标识符?

Pie*_*ier 3 macos xcode cocoa nstabview swift

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

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

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

Optional(0x608000100e10)
Optional(0x6080000c36b0)
Run Code Online (Sandbox Code Playgroud)

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

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

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

And*_*ini 5

首先,您可以通过以下方式定义您的标识符:

在此处输入图片说明

然后在您的代码中,您可以定义一个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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)