Ссылка на UITableViewCell, который создается в cellForRowAtIndexPath - PullRequest
1 голос
/ 08 декабря 2011

У меня в заголовке TableView есть кнопка, которая является пустым полем, а при нажатии - галочкой. У меня та же кнопка на ячейках для этого заголовка. Поэтому я хочу выполнить действие для каждой ячейки в этом разделе. В качестве примера я использую Animating TableView из WWDC 2010. Объект заголовка имеет массив целых чисел, которые отслеживают, сколько строк в его разделе.

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

Пока у меня есть что-то вроде этого:

- (void)selectAllCheckmarksInSectionHeaderView:(SectionHeaderView *)sectionHeaderView forSection:(NSInteger)section {
    SectionInfo *sectionInfo = [self.SectionInfoArray objectAtIndex:section];
    int totalRows = [[sectionInfo rowHeights] count];
    for (int row = 0; row < totalRows; row++) {
        NSIndexPath *path = [NSIndexPath indexPathForRow:(NSUInteger)row inSection:section];
        OrderTableViewCell *cell = (OrderTableViewCell *)[_orderTableView cellForRowAtIndexPath:path];
        cell.CheckmarkButton.selected = YES;
    }
}

Однако мой OrderTableViewCell равен нулю.

1 Ответ

0 голосов
/ 08 декабря 2011

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

CGRect sectionRect = [self.tableView rectForSection:0]; // Rect for first section
NSArray *indexPathsInSection = [self.tableView indexPathsForRowsInRect:sectionRect];

for (NSIndexPath *indexPath in indexPathsInSection)
{
    // Obtain the cell at each index path and update its accessory state
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

Конечно, это слишком упрощенный пример.Более гибкий подход заключается в обновлении некоторого объекта модели, когда раздел «выбран», и перезагрузке таблицы.Затем в вашем -tableView:cellForRowAtIndexPath: вы определяете, должна ли быть отмечена ячейка в разделе, основываясь на объекте модели для всего раздела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...