2012-03-27 36 views

回答

4

我原来的答复建议观察NSTabViewselectedTabViewItem,但似乎并没有工作(在测试中,我只能得到它来观察NSKeyValueObservingOptionInitial)。

一个可能更聪明的解决方案是使用委托。在相关控制器中实施tabView:didSelectTabViewItem:

Docs here

+0

你的意思是这样的: [NSNotificationCenter defaultCenter]的addObserver:自 \t选择:@选择(STVI :) \t名:@ “selectedTabViewItem” \t对象:无]。 \t \t \t \t \t \t \t \t \t \t \t \t “STVI”是方法被调用。在这种情况下,这是行不通的,没有通知被张贴。 – Kevin 2012-03-27 08:09:59

+0

感谢您的答复,不幸的是,我得到错误 'NSTabView'可能不会响应'-addObserver:forKeyPath:上下文:' 任何想法? – Kevin 2012-03-27 08:26:10

+0

另外,当你提到绑定时,你通常会绑定选项卡视图?我正在使用OS X,所以iOS问题到现在还没有问题。 – Kevin 2012-03-27 08:29:16

0

这里是斯威夫特3

为您NSTabViewController一个自定义的类,它充当的NSTabView代表的例子。 NSTabViewController类已经实现了NSTabViewDelegate协议。

class CustomTabViewController: NSTabViewController { 
    override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) { 
     let identifier = tabViewItem?.identifier as? String 
     print(identifier) 
    } 

} 

然后在Interface Builder:

  1. 指定您在右侧面板
  2. 在左侧的接口层次结构面板中创建您的标签视图控制器在Identity Inspector中的自定义类,控制从选项卡视图拖动到自定义选项卡视图控制器(名称将取决于您的自定义类)并从出现的小弹出框中选择delegate

您也可以在NSTabViewDelegate的代表as explained in the documentation中实施其他方法。