如何设置NSTabViewItem的标识符?

时间:2018-01-22 04:44:37

标签: swift xcode macos cocoa nstabview

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

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

这会打印出类似于指针内存位置的内容:

Optional(0x608000100e10)
Optional(0x6080000c36b0)

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

我还使用了print(tabViewItem!.label),但它在标签按钮中打印了标签。

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

1 个答案:

答案 0 :(得分:3)

首先,您可以用这种方式定义您的标识符:

enter image description here

然后在您的代码中,您可以定义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
            }
        }
    }
}