我想知道NSTabView
何时切换到特定视图。为此,我使用我的自定义类扩展NSTabViewController
以便能够充当委托:
class OptionsTabViewController: NSTabViewController {
override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
print(tabViewItem!.identifier)
}
}
这会打印出类似于指针内存位置的内容:
Optional(0x608000100e10)
Optional(0x6080000c36b0)
我想应该可以在界面构建器中的某处设置这些标识符,但我已经尝试在标记为identifier
的不同文本字段中编写内容,并且仍然在控制台中获取这些内存位置值。
我还使用了print(tabViewItem!.label)
,但它在标签按钮中打印了标签。
那么如何设置该标识符以便能够识别标签视图组件中哪个视图处于活动状态?
答案 0 :(得分:3)
首先,您可以用这种方式定义您的标识符:
然后在您的代码中,您可以定义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
}
}
}
}