2014-12-01 5 views
0

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

Могу ли я сделать что-то вроде этого?

This is the master view

Когда пользователь нажимает на ячейку 1, детальный вид ячейки одного получает отображается между CELL1 и CELL2, как показанные клетки below.The 2,3 будет выталкиваться вниз, чтобы отобразить данные.

detail view in master view

Возможно ли это в прошивке?

ответ

1

У меня было немного свободного времени сегодня и написал полный пример, который расширяется и сворачивается. В простом случае вы можете просто изменить данные жесткого кодирования, но вы также можете загрузить структуру во время выполнения. Я положил его на Github, он может быть полезен и для других: https://github.com/efalkenberg/ExpandableTableView

0

С массива, который указывает, какой тип должен быть показан вы можете вставить 3 ячейки динамически, как следующее:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // old value = @[@0,@0]; 
    self.data = @[@0,@1,@1,@1,@0]; 

    NSMutableArray *indexPaths = [NSMutableArray array]; 
    for(NSInteger i=indexPath.row; i< indexPath.row+3; i++) 
    { 
     [indexPaths addObject:[NSIndexPath indexPathForRow:i+1 inSection:0]]; 
    } 

    [self.tableView beginUpdates]; 
    [self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; 
    [self.tableView endUpdates]; 
} 

и будет называться по протоколу источника данных для ячейки для вставки.

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

    if([self.data[indexPath.row] isEqual: @0]){ 
     cell = [tableView dequeueReusableCellWithIdentifier:@"level1cell" forIndexPath:indexPath]; 
    } 
    else 
    { 
     cell = [tableView dequeueReusableCellWithIdentifier:@"level2cell" forIndexPath:indexPath]; 
    } 

    // Configure the cell...  
    return cell; 
} 

enter image description here

PS: я использовал массив с единицами и нулями, чтобы сделать код простым для чтения, вы должны обязательно заменить это чем-то более элегантное :)

+0

Если я это сделаю, первая ячейка будет заменена новыми 3-мя ячейками. Я не хочу, чтобы моя первая ячейка была удалена. Я хочу добавить представление между двумя ячейками таблицы, которые показывают подробный вид! –

+0

Вы правы, извините за это - обновили код примера. – Eike

+0

, если мы снова коснемся той же ячейки, добавятся ли дополнительные ячейки? –