2010-04-09 41 views
3

我見過的一些例子像是否可以根據標籤對UIView的NSArray集合進行排序?

[someArray sortUsingSelector:@selector(compare:)]; 

我正在尋找存儲UIViews集合一個例子,我想給他們按升序或基於標籤的降序我假設編程時一個新的UIView被創建。

如果有人能提供一個代碼示例或說明,這將是夢幻般的

回答

13

NSArray提供了許多方法來對數組進行排序(所有列在NSArray文檔的「排序」標題下)。您可以定義一個函數,一個方法或一個排序描述符來根據它們的標籤比較視圖進行排序。舉例來說,這裏是一個使用NSSortDescriptor的實現:

NSSortDescriptor *ascendingSort = [[NSSortDescriptor alloc] initWithKey:@"tag" ascending:YES]; 
NSSortDescriptor *descendingSort = [[NSSortDescriptor alloc] initWithKey:@"tag" ascending:NO]; 
NSArray *sortedArray = [someArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:ascendingSort]]; 
+0

謝謝,更多的課程可以閱讀! – Chris 2010-04-09 23:23:11

+0

嗨查克我想知道如果你可以進一步協助,我很好奇這種排序會使用UIView的frame.origin.y屬性(或任何財產),我很努力去理解排序工作的方式在Objective-C中,我相信我會到達那裏,只是希望儘早這樣做而不是後來!謝謝 – Chris 2010-04-14 20:22:19

2
- (NSComparisonResult)compareTags:(UIView *)view { 
    if ([self tag] == [view tag]) return NSOrderedSame; 
    if ([self tag] > [view tag]) return NSOrderedDescending; 
    return NSOrderedAscending; 
} 

假設我得到的排序正確的,那就是,對於這種使用方法必須是對的UIView(輕鬆地完成一個類別)。還有其他幾種獲得相同結果的方法,請參閱文檔Sorting Arrays

+0

感謝這個,我已經走了NSSortDescriptor解決方案,但我很欣賞的聲音回覆! – Chris 2010-04-09 23:24:40

相關問題