2017-02-07 1 views
0

У меня есть требование отображать данные из веб-службы в расширяемом представлении таблицы до двух уровней. Хотя это возможно со статическими данными, я не могу найти способ сделать эту работу с данными, полученными из бэкэнд. Пример этого в Постмане показан ниже:Отображение данных в расширяемом/сворачиваемом UITableView из JSON (цель-c)

One Level UITableView Data in Postman

Выше только для расширения первого уровня. Здесь «Бухгалтеры» являются основной категорией и «jj-тегами», «Сертифицированный публичный» & «Общие службы» - это подкатегории, которые будут видны после расширения (как только пользователь наберет ячейку с именем «Бухгалтеры»). Аналогично, несколько категорий должны отображаться и могут содержать или не содержать дальнейшее расширение второго уровня.

Что касается веб-службы, я имею возможность получать данные о 2-мя способами:

  • Getting как основные и подкатегорий в одном API (как показано на скриншоте выше).
  • Получение основных и подкатегорий в отдельных API.

До сих пор я пытался реализации основных категорий в titleForHeaderInSection & первого уровня подкатегорий в cellForRowAtIndexPath

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 

    return [[subCatArray objectAtIndex:section] count]; 
} 

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ceLL" forIndexPath:indexPath]; 
    cell.textLabel.text = [[subCatArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]; 
    return cell; 
} 

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ 

    return [catArray count]; 
} 

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ 

    for (int i=0; i<[catArray count]; i++) { 
     if(section == i){ 
      return NSLocalizedString([catArray objectAtIndex:i], nil); 
     } 
    } 
    return nil; 
} 

Но как я могу идти о втором уровне и делает эти разборные/расширяемая ?

ответ

0

Прежде чем начать, я хотел бы назвать ячейки, которые расширяются как первичные ячейки и расширенные ячейки (например, ячейки подкатегорий) в качестве вторичных ячеек.

Как вы начали внедрять, сделайте основную ячейку в качестве заголовка. Но, не давая подсчету subCatArray для этого конкретного раздела в методе numberOfRowsInSection, вам нужно изменить массив, счет которого вы планируете возвращать в методе «numberOfRowsInSection». Этот массив должен быть таким, чтобы он содержал детали только видимых строк, т. Е. Изначально он должен был иметь нулевые элементы, а при нажатии «Бухгалтеры» изменяли массив с деталями таких элементов, как «jj tags», «Certified Public» & " «Общие службы» и повторное нажатие на ячейку «Бухгалтеры» делает массив пустым. Чтобы обнаружить нажатие на заголовок раздела, вы можете поместить кнопку с рамкой, равной кадру «viewForHeader», и передать индекс раздела в качестве тега кнопки, или вы можете использовать жесты касания. Обязательно перезагрузите таблицу на селектор, который вызывается при нажатии на раздел.

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

+0

Вы помогли до некоторой степени, однако это не относится к третьему уровню. –

+0

Спасибо за ваши отзывы –