2009-06-02 111 views
2

所選項目的NSCell不會改變選擇我有一個NSPopUpButtonCell定製的NSCell內,我使用NSPopUpButtonCell內定製當從菜單

- (BOOL)startTrackingAt:(NSPoint)startPoint inView:(NSView *)controlView 

單擊時產生彈出菜單。

我也覆蓋copyWithZone:在我的自定義單元格中複製popUpCell實例變量,以便我表格視圖中的每一行都有自己的彈出單元格。

我的問題是,雖然菜單彈出正常,並且您可以從菜單中選擇一個項目,但當選中某個項目時,單元格不會更改其所選項目以與菜單中所選項目匹配。但是,如果我在複製區域中註釋掉複製該單元格的行,那麼它的行爲就會隨着選擇的進行而發生變化(更改爲匹配選定的項目,儘管每一行都將具有相同的選定項目) 。

有人知道這是爲什麼,或者更重要的是,我該如何解決它?

+0

您是否意識到這樣一個事實:NSTableView不會爲每行創建NSTableColumn的單元的副本,而是重用一個實例? – 2009-06-09 10:51:45

回答

0

您是否嘗試過使用

–trackMouse:inRect:ofView:untilMouseUp: 

代替

startTrackingAt:inView: 

0

我建議不要複製的單元格,而不是使用:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

...委託方法來設置單元格與正確的數據繪製的每個行之前。

+0

我實際上在做什麼是使用NSArrayController的綁定,它似乎不時地製作單個單元的副本。我不是在任何時候親自手動調用[cell copy]。 – 2009-06-15 15:23:37