2012-03-27 18 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中實施其他方法。