Cocoa委托nstabviewcontroller

Art*_*rti 5 cocoa swift

我有一个主要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,如果变量hasChangestrue然后会弹出消息:

"你有未保存的更改.你想更改标签吗?"

如果我检查这个MainTabViewController我得到它<NSTabView: 0x101e17a10>以及如何处理它我不知道.

如果我尝试使用NSTabViewDelegate我的MyViewController当时我不知道如何委托MainTabViewController它.哪附上呢?

class MyViewController: HIDNSViewController {
    func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
        //Never called
    }
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*eek 1

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 键切换时的输出:

在此输入图像描述