2013-05-17 3 views
0

позволяет сказать, что я делаю приложение, в котором вы добавляете автопроизводителей к главному диспетчеру просмотра, который содержит UITableView, на втором контроллере представления (также UITableView), вы можете добавить модели автомобилей под имя производителя.tableview to another - IOS

сейчас моя проблема очень проста, я могу добавить производителей, но когда я нажимаю на любое название производителя, я получаю 2-й вид таблицы со всеми моделями всех производителей.

Я пробовал использовать, возможно, предикаты, фильтруя mutablearray, а затем передавая его на второй контроллер представления. никакого успеха :(

NSPredicate * pred = [NSPredicate predicateWithFormat:@"currentCategoryOfImage = '%@'",[self.categoriesArray objectAtIndex:indexPath.row]]; 
    [self.myImagesObjArray filterUsingPredicate:pred]; 
    self.detailViewController.imagesItem = self.myImagesObjArray; 

, но я не думаю, что Theres где-то гораздо более простой способ сделать это, что до сих пор ускользает от меня

+0

Можете ли вы рассказать нам, что пошло не так, как за пределами «без успеха»? Поскольку прямой ответ на вашу проблему заключается в фильтрации данных, отображаемых во второй таблице, в соответствии с тем, что было выбрано в первой таблице. – Caleb

ответ

1

Вы не должны заключать %@ в одиночные кавычки в предикате:.

NSPredicate *pred = [NSPredicate predicateWithFormat:@"currentCategoryOfImage = %@",[self.categoriesArray objectAtIndex:indexPath.row]]; 

И вы, вероятно, не хотите изменять self.myImagesObjArray, но установите список контроллеров подробных представлений в отфильтрованный массив:

self.detailViewController.imagesItem = [self.myImagesObjArray filteredArrayUsingPredicate:pred]; 
+0

Несовместимые типы указателей, назначающие «NSMutableArray *» из «NSArray *», когда я пытаюсь это сделать, хотя это только предупреждение, но мой фильтр не фильтрует право, и я получаю все объекты array вместо конкретного, я хочу –

+0

Если 'self .detailViewController.imagesItem' - это NSMutableArray, тогда 'self.detailViewController.imagesItem = [[self.myImagesObjArray filtArrayUsingPredicate: pred] mutableCopy]' должен работать. Но вам действительно нужен изменяемый массив? Вы должны подумать о объявлении 'imagesItem' как' NSArray * '. –

+0

@EdenV .: Работает ли он сейчас? Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. –

0

И если вам не нравится, первый вид предиката есть предикат с блоком, что-то вроде этого:

YourCustomObject = [self.categoriesArray objectAtIndex:indexPath.row]; 
NSArray *resultArray = [yourArray filteredArrayUsingPredicate: [NSPredicate predicateWithBlock:^BOOL(YourCustomObject *object, NSDictionary *bindings) { 
    return [YourCustomObject.comparedProperty isEqualTo:object.comparedProperty]; 
}]]; 

Я не знаю ваших имен классов моделей, так что я самодельное.