2017-02-03 3 views
0

Итак, у меня есть этот источник данных, NSArray, состоящий из пользовательских объектов.Получить свойства объекта, связанного с строкой в ​​разделе UITableView

Я показываю источник в UITableView. Основываясь на свойствах объектов, табличное представление разделено на разделы.

Как-то я не могу понять, как получить правильный объект, когда пользователь выбирает строку.

Мне нужно найти выбранный объект, чтобы изменить его свойства, после чего я могу перестроить UITableView.

Я уверен, что это что-то простое. Пожалуйста, помогите мне!

+0

Все кто должен знать, чтобы помочь будет содержаться в методах три DataSource: NumberOfSections, numberOfRowsInSection, cellForRowAtIndexPath. Вставьте их, и вы получите помощь в течение нескольких секунд. – danh

ответ

0

Возможно, просто используйте функцию делегата didSelectRowAtIndexPath, а затем из его аргумента indexPath возьмите свой пользовательский объект, например dataSource[indexPath.row]. Пока сложно сказать, что вы не упомянули, как вы храните эти объекты.

+0

Это возвращает только строку В разделе и разделе. Я не понимаю, как я могу использовать эту информацию для получения связанного объекта с источником данных. – Sjakelien

+1

Это зависит от того, как вы храните их внутри своего источника данных. Другой способ заключается в том, что для определенной ячейки, когда вы их рисуете, просто добавляйте поле в пользовательский класс ячеек со своим типом источника данных и назначайте его ему, тогда вы можете захватить этот объект из самой ячейки. –

+0

Вы также можете сделать dict из вашего источника данных и удерживать его как [SectionRow, object], тогда вы можете получить его из метода didSelect, о котором я упоминал. –

0

Гадать, что ваш источник данных что-то вроде этого:

self.dogs = [[NSArray alloc] initWithObjects:@"Affenpinscher",@"Afghan Hound",@"Alaskan Malamute", nil]; 

Вы можете получить доступ к определенному значение из NSArray с параметром indexPath.row одного метода делегата от UITableView:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

    NSString *dogDreed = [self.dogs objectAtIndex:indexPath.row]; 

    NSLog(@"Dreed of dog selected: %@", dogDreed); 
} 
0

Хорошо, я закончил делать следующее (упрощенное):

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    myObject *theObject = [arrayOfObjects objectAtIndex:indexPath.row]; 
    cell.tag = theObject; 
    return cell; 

} 

а затем, в или дер, чтобы получить его, я:

// (called from a UITableView delegate) 

-(void)identifyObject:(id)indexPath{ 
    UITableViewCell *selectedCell = [myTableView cellForRowAtIndexPath:indexPath]; 

    int hash = selectedCell.tag; 
    NSPredicate *cellHashFilter = [NSPredicate predicateWithFormat:@"hash == %i", hash]; 
    myObject *theEvent = [arrayOfObjects filteredArrayUsingPredicate:cellHashFilter][0]; 

    //doing some stuff here 
    [self refreshTable]; 
} 
Смежные вопросы