我有一个主要NSTabViewController有几个标签:
class MainTabViewController: NSTabViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
print(tabView)// returns <NSTabView: 0x101e17a10> but what to do with it ?
}
}
Run Code Online (Sandbox Code Playgroud)
我想在每一个检查NSViewController,如果变量hasChanges被true然后会弹出消息:
"你有未保存的更改.你想更改标签吗?"
如果我检查这个MainTabViewController我得到它<NSTabView: 0x101e17a10>以及如何处理它我不知道.
如果我尝试使用NSTabViewDelegate我的MyViewController当时我不知道如何委托MainTabViewController它.哪附上呢?
class MyViewController: HIDNSViewController {
func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
//Never called
}
}
Run Code Online (Sandbox Code Playgroud)
0x101e17a10NSTabView是tabView对象指向的实例的地址。您需要在 didSelect 方法中打印 tabView标识符。
您需要在 Interface Builder 中设置标识符:
然后(例如):
override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
if tabView.selectedTabViewItem?.identifier! as! String == "1" {
print("FIRST VC")
} else {
print("SECOND VC")
}
}
Run Code Online (Sandbox Code Playgroud)
Tab 键切换时的输出: