2010-04-09 2 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

+0

Hi Chuck Мне интересно, помогаете ли вы в дальнейшем, мне интересно, будет ли этот вид работать с использованием свойства frame.origin.y UIView (или любого свойства в этом отношении), я изо всех сил стараюсь понять, как работают сортировки в Objective-C, я уверен, что доберусь туда, просто надеясь сделать это раньше, а потом позже! благодаря – Chris

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

Смежные вопросы