Как создать список источников в стиле iTunes, который фильтрует основное представление таблицы?

Я прочитал несколько тем о том, как имитировать стиль исходного списка iTunes. Но я не могу понять, что нужно сделать, чтобы они действительно отображали другие вещи в основном виде таблицы.

Моя установка такова: у меня есть основные данные в фоновом режиме, содержащие все треки из iTunes и строку «состояния», которая имеет 3 состояния. Я хочу отображать только части заголовков при выборе элемента в исходном списке. Элементы списка источников соответствуют состояниям треков. Другими словами: 3 элемента исходного списка, представляющие 3 разные группы в одном наборе данных. Группы различаются по этой переменной состояния.

Я попытался создать массив NSStrings и NSPredicates и привязать выбранный элемент к предикату фильтрации основных представлений таблицы. Но не вышло.

Спасибо вам большое за ваш ответ.

РЕДАКТИРОВАТЬ: теперь работает установка предикатов фильтра из массива. Но это плохо работает с полями NSSearch, которые фильтруют таблицу. Есть ли другой способ или я могу легко объединить два предиката?


person david    schedule 02.04.2011    source источник


Ответы (1)


Вы можете «объединить» два предиката, сложив их вместе «ИЛИ» или «И». Другими словами, допустим, у вас есть два предиката:

NSPredicate *one = [NSPredicate predicateWithFormat:@"foo = 42"];
NSPredicate *two = [NSPredicate predicateWithFormat:@"bar = 'abc'"];

Ты можешь сделать:

NSArray *subpredicates = [NSArray arraWithObjects:one, two, nil];
NSPredicate *both = [NSCompoundPredicate andPredicateWithSubpredicates:subpredicates];
//this is equivalent to: foo = 42 AND bar = 'abc'

Or

NSPredicate *both = [NSCompoundPredicate orPredicateWithSubpredicates:subpredicates];
//this is equivalent to: foo = 42 OR bar = 'abc'
person Dave DeLong    schedule 10.04.2011