當我嘗試設置觀察這個特定鍵時,沒有任何反應。這是我的意思。NSArrayController - 觀察選擇索引
我有一個標準的Cocoa應用程序,帶有NSTableView,我想出瞭如何根據選擇的單元格來更改圖像視圖中顯示的圖像。
現在,我想弄清楚如何通過選定的索引禁用/啓用按鈕。我的意思是,我在窗口中有一個按鈕,它在某些索引上被禁用。
SomeClass的的init方法
-(id)init {
if (self=[super init]) {
[arrayController addObserver:self forKeyPath:@"selectionIndex" options:NSKeyValueObservingOptionNew context:NULL];
}
}
然而,當我實現observeValueForKeyPath:方法,所做的更改不會被拾起我挑選新指標。事實上,如果我嘗試記錄它,插座會顯示(null)。然而,當我在AppDelegate中添加觀察者時,AppDelegate(當作爲觀察者指定時)會提取更改。
有沒有一些原因,我的泛型SomeClass對象不?它應該以不同的方式完成嗎?
注:
我試着子類SomeClass的一個NSWindow,然後使該窗口的所有者SomeClass的,並在awakeFromNib設立觀察員,這工作,但似乎是一個不錯的方法來做到這一點。
如何以及在哪裏做SomeClass上的alloc init?此外,你的意思是「插座顯示(空)」 - 什麼插座? – rdelmar 2012-08-07 01:37:52
SomeClass有一個它與nib窗口(藍色立方體事件)一起被初始化的實例,並且在初始化SomeClass(甚至在之後)的實例期間,如果我做NSLog(@「%@」,arrayController),我會得到'(null)'。 (arrayController設置爲插座) – 2012-08-07 02:00:05
您是否檢查過您的init是否被調用?如果此類的實例是在nib中創建的,則應該將代碼置於awakeFromNib中。 – rdelmar 2012-08-07 02:04:13