Я сделал UITableView, заполненный источником данных plist, и я сделал пользовательские ячейки с помощью Interface Builder (поэтому я использую файлы xib)
вот часть кода, где я создаю ячейки:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
DataTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"DataTableViewCell" owner:nil options:nil];
for (UIView *view in views) {
if ([view isKindOfClass:[UITableViewCell class]]) {
cell = (DataTableViewCell*)view;
}
}
}
return cell;
}
затем, когда я использую:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
чтобы получить выбранную ячейку, я вызываю этот метод, чтобы расширить ячейку:
- (void)expandCellAtIndex:(int)index {
NSMutableArray *path = [NSMutableArray new];
NSArray *currentCells = [subCellItems objectAtIndex:index];
int insertPos = index + 1;
for (int i = 0; i < [currentCells count]; i++) {
[path addObject:[NSIndexPath indexPathForRow:insertPos++ inSection:0]];
}
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
Теперь проблема в том, что, поскольку я не делал этого раньше, я застрял в логике того, как изменить ячейку, которую я хочу показать при расширении, потому что метод:
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
ищет правильный путь и вставляет ячейку с тем же xib-файлом ячейки, что и тот, который я загрузил с моими данными в начале
как я могу установить другую ячейку (с другим xib и другими данными) для отображения вместо того же, что и раньше?
в основном у меня эта таблица работает, но в расширяющейся ячейке я вижу копию ячейки, к которой вы прикасаетесь