3

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

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

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

Optional(0x608000100e10)
Optional(0x6080000c36b0)

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

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

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

4

1 回答 1

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
            }
        }
    }
}
于 2018-01-22T05:06:17.503 回答