2016-10-26 59 views
5

我有一个主NSTabViewController有几个标签:可可委托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 ? 
    } 

} 

我想在每一个NSViewController如果变量hasChangestrue检查然后弹出消息:

“你有未保存的更改你想改变标签吗?“

如果我检查这MainTabViewController我得到<NSTabView: 0x101e17a10>什么用它做我不知道。

如果我尝试在我的MyViewController中使用NSTabViewDelegate,那么我不知道如何将MainTabViewController委托给它。在哪里附上?

class MyViewController: HIDNSViewController { 
    func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) { 
     //Never called 
    } 
} 
+0

我已经添加了一些我的答案呃。为了澄清它 –

回答

1

0x101e17a10NSTabView实例的地址由TabView的对象指向。您需要在didSelect方法内打印tabView 标识符

您需要设置标识符在界面生成器:

enter image description here

然后(例如):

override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) { 
    if tabView.selectedTabViewItem?.identifier! as! String == "1" { 
     print("FIRST VC") 
    } else { 
     print("SECOND VC") 
    } 
} 

输出Tab键时:

enter image description here

+0

我忘记添加代表:) – Arti

+0

哦好吧。好。真高兴你做到了 :) –