Cocoa - 找出NSTabView何时更改其标签

时间:2012-03-27 07:51:39

标签: objective-c cocoa nsnotification nstabview

如何找出NSTabViewItem的更改时间,即用户更改了NSTabView的视图。

理想情况下,我想生成通知,但欢迎任何解决方案。

谢谢!

2 个答案:

答案 0 :(得分:5)

我的原始回答建议观察selectedTabViewItem的{​​{1}},但这似乎不起作用(在测试时我只能观察NSTabView)。

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

文档here

答案 1 :(得分:1)

这是Swift 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. 在右侧面板中的Identity Inspector中将您创建的自定义类分配给Tab View Controller
  2. 在左侧的界面层次结构面板中,控制从标签视图拖动到自定义标签视图控制器(名称将取决于您的自定义类),然后从显示的小弹出框中选择delegate
  3. 您还可以在NSTabViewDelegate的委托as explained in the documentation中实施其他方法。