我想知道 NSTabView
何时切换到特定 View 。为此,我用我的自定义类扩展了 NSTabViewController
以便能够充当委托(delegate):
class OptionsTabViewController: NSTabViewController {
override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
print(tabViewItem!.identifier)
}
}
这打印了看起来像指针内存位置的内容:
Optional(0x608000100e10)
Optional(0x6080000c36b0)
我想应该可以在界面生成器中的某处设置这些标识符,但我已经尝试在标记为 identifier
的不同文本字段中编写内容,并且仍然在控制台中获取这些内存位置值。
我还使用了 print(tabViewItem!.label)
但它会在选项卡按钮中打印标签。
那么如何设置该标识符以识别选项卡 View 组件中哪个 View 处于事件状态?
最佳答案
首先,您可以这样定义您的标识符:
然后在您的代码中您可以定义一个 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
}
}
}
}
关于swift - 如何设置 NSTabViewItem 的标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48374804/