2016-04-24 8 views
1

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

Я показываю эти матчи в «Table View», как это:

enter image description here

Так что я хотел бы достичь, это: при нажатии на ячейку, показать детали матча, как как показано на рисунке.

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

+0

Некоторые другие способы решения проблемы http://stackoverflow.com/questions/29678471/expandi ng-and-collapsing-uitableviewcells-with-datepicker/34703276 # 34703276 – DogCoffee

+0

очень полезно! Благодаря @DogCoffee! – fabersky

+1

Возможный дубликат [Раскрывающийся список в UITableView в iOS] (http://stackoverflow.com/questions/33186659/drop-down-list-in-uitableview-in-ios) – Rick

ответ

4

В этом случае вам не нужно использовать расширяемый/аккордеон. Вот как вы можете справиться с этим. Позволяет говорит ваш размер ячейки, когда нормаль 40 и когда щелкнул частности 100. В heightForRowAtIndexPath вы можете проверить, какие клетки выбирают и возвращают больше высоты

if(selectedRow == indexPath.row) { 
    return 100; 
} else { 
    return 40; 
} 

Тогда что вы можете сделать это в didSelectRowAtIndexPath или метод clickEvent

[self.tableView beginUpdates]; 
[[self tableView] reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForItem: selectedRow inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic]; 
[self.tableView endUpdates]; 

Таким образом, ваша ячейка будет отобрана все это, но на основе высоты вы скрываете или показываете контент.

Обновленный Ответ с Enter Источник

ViewController.m

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
if(selectedIndex == indexPath.row) 
    return 100; 
else 
    return 40; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    customCell *cell = (UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"Cell"]; 
    NSDictionary *matches = self.dataArray[indexPath.row]; 
    cell.matchName.text = [matches [email protected]"MatchName"]; 
    if() { 
     cell.heightConstraintSecondView.constant = 0; 
    } else { 
     cell.heightConstraintSecondView.constant = 59; 
     cell.team1.text = [matches [email protected]"Team1"]; 
     cell.team2.text = [matches [email protected]"Team2"]; 
     cell.score.text = [matches [email protected]"Score"]; 
    } 
    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    selectedIndex = indexPath.row; 
    [self.tableView beginUpdates]; 
    [[self tableView] reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 
    [self.tableView endUpdates]; 
    } 
} 
+0

приятно! поэтому где я должен добавить информацию о матче? (например, 'team1 [selected_cell], team2 [selected_cell]' и т. д. «начинать» и «endUpdates»? – fabersky

+0

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

+0

У меня есть все детали соответствия, сохраненные в массивах, поэтому в основном все ячейки будут одинаковыми. Когда я выбираю cell1, он будет показывать детали для этой ячейки (совпадение), когда я выберу cell2, он отобразит детали match2 и т. д. ... – fabersky

0

уборщик способ создать 2 клетки с различными идентификаторами и изменить его во время выполнения при нажатии на ячейку. Проверить этот вопрос: Drop-Down List in UITableView in iOS

 Смежные вопросы

  • Нет связанных вопросов^_^