2011-08-23 45 views
0

我有一個NSOutlineView綁定到NSTreeController。 在「接口」構建器中,我使用Controller鍵「arrangedObjects」將NSOutlineView的每一列綁定到樹控制器,並將模型鍵路徑作爲實體屬性或實體類中的方法。排序綁定到NSTreeController的NSOutlineView中的列

現在所有其他列的排序完美,除了一個特殊的列。特殊列的模型鍵路徑綁定到在我的實體類中聲明的方法。此方法取決於我的代碼中的某些條件將返回NSStringNSDictionary。 當它返回一個NSDictionary,委託方法:

- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item 

解析NSDictionary,並返回針對該小區的雙精度值。另請注意,這種情況下的單元格來源於NSCell,並顯示一個進度條。

總之,根據具體情況,我的專欄將顯示進度條和字符串的混合。

我想實現排序,以便所有進度條保持在一起,字符串按字母順序排序。

回答

0

如果您嘗試將table column's sort descriptor設置爲使用查看對象類的比較器創建的描述符,也許您會有一些運氣。 (你也可以嘗試使用「班級」鍵填寫IB中的「排序鍵」,但我認爲這可能不太可能工作...)

0

那麼我找到了一個解決方案,我自己,只是發佈我的查詢後2分鐘:)解決方案是在IB中添加一個自定義排序鍵,並在我的實體類中定義一個具有該鍵名的方法,該方法返回一個NSInteger。因爲我希望所有的NSDictionary對象都保持在一起,並且要對所有NSString進行排序,所以我根據對象類型返回適當的整數。 注意任何可能與排序不一致的人:請確保在IB中啓用sortDescriptor的綁定。

0

嘗試

NSSortDescriptor *sorter = [[[NSSortDescriptor alloc] 
           initWithKey:NULL 
           ascending:YES 
           selector:@selector(localizedCaseInsensitiveCompare:)] autorelease]; 
[[myOutlineView tableColumnWithIdentifier:@"Name"]setSortDescriptorPrototype:sorter]; 
相關問題