2012-08-04 125 views
0

我有一個NSTableView,每個單元包含一個NSPopUpButtonCell。我已將NSPopUpButtonCell的操作設置爲只檢查選定索引的方法(以便可以保存並重新載入表)。NSPopUpButtonCell indexOfSelectedItem總是返回0

thePopUpButtonCell.action = @selector(popUpChangedValue); 

-(void)popUpChangedValue { 

    NSLog(@"%ld", [thePopUpButtonCell indexOfSelectedItem]); 

} 

無論我選擇什麼,它說所選的索引是0,即使它不是。你知道這是什麼原因嗎?

+0

PopUpButtonCell是什麼?這是一個IBOutlet連接到IB的單元格嗎? – rdelmar 2012-08-04 23:13:21

+0

@rdelmar是的,它是 – 2012-08-04 23:15:41

+0

這不是你在桌子上這樣做的方式。如果您記錄PopUpButtonCell,則無論您點擊哪一行,都會看到它返回相同的實例。 – rdelmar 2012-08-04 23:21:15

回答

3

我這樣做的方式是綁定。你需要在你的數組中有一個字段(NSDictionary中的一個鍵值對)來保存彈出選擇的值。在IB中,您將擁有一個數組控制器,其內容數組綁定到您的數組(包括上面提到的字典)。具有彈出窗口的列將其選定值綁定到數組控制器的arrangeObjects,並在字典中使用鍵名稱的模型鍵路徑。當您更改彈出窗口中的選擇時,數組的值將通過綁定的魔術更新。

0

看起來像你的thePopUpButtonCell也許也是零?或許還有一些保留等問題。

+0

我將它鏈接到XIB文件中的NSPopUpButtonCell。輸出它顯示''。 NSLog(@「%@」,thePopUpButtonCell);'你有其他想法嗎? – 2012-08-04 23:20:00