2015-08-30 127 views
0

我有NSTableView綁定到NSArrayController。我正在排序NSTableView,它工作正常,但是當我點擊NSTableView的行時,我得到了不同的值,就像NSArrayController沒有被排序。OS X:排序NSTableView綁定到NSArrayController

這裏是我如何排序NSTableView的:

NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey:@"names" ascending:YES]; 
[self.names setSortDescriptors:[NSArray arrayWithObject:sd]]; 

enter image description here

例如當我點擊我的Name1得到名稱2的值。我需要的是將NSTableView的值與NSArrayController進行匹配。你們誰都知道我做錯了什麼?或者如何對NSTableView和NSArrayController進行排序?

我會很感激你的幫助

回答

1

當我點擊名稱1,我得到的值的名稱2

如何你得到的價值?

我懷疑你看錯了位置。

首先,您應該綁定表視圖的selectionIndexes綁定到陣列控制器的selectionIndexes屬性。同樣,您應該將表視圖的sortDescriptors綁定綁定到陣列控制器的sortDescriptors屬性。

不清楚self.names在您的代碼中引用了什麼。那是表視圖還是數組控制器?就個人而言,我會通過設置陣列控制器的sortDescriptors來設置表視圖的排序順序。

無論如何,在完成所有設置之後,當您想要獲取所選對象時,您必須諮詢陣列控制器,而不是可能提供陣列控制器內容的模型。 (你沒有真正說過,但我會假設你的陣列控制器的綁定綁定到你的模型中的索引集合屬性。)

首先,你可以簡單地查詢它的selectedObjects屬性。

或者,如果您從行索引開始,則必須使用它索引到其arrangedObjects

您必須而不是只需將行或選擇索引和索引引入模型的索引集合屬性。數組控制器在將對象提供給表視圖(基於排序描述符以及可能的過濾器謂詞)之前重新排列了對象。因此,索引不再對應於模型中的原始索引集合。

+0

我將self.names引用到名稱的tableview。 tableview只有一列。 – user2924482

相關問題