the*_*lus 2 objective-c accordion expandable uitableview ios
我有一些按年份编目的运动比赛,每场比赛我都有最终结果,比赛日期和得分手.
我在'Table View'中显示这些匹配,如下所示:
所以我想要实现的是:当点击一个单元格时,显示匹配的详细信息,如图所示.
我还发现了一些库来实现手风琴/可扩展的风格,但是没有人能做到这一点.他们只是扩展细胞并显示另一个细胞.
在这种情况下,您甚至不需要使用可扩展/手风琴.以下是解决这个问题的方法.让我们说正常情况下你的单元格大小为40,特别点击时单元格为100.在heightForRowAtIndexPath中,你可以检查选择了哪个单元格并返回更多高度
if(selectedRow == indexPath.row) {
return 100;
} else {
return 40;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以做的是在didSelectRowAtIndexPath或clickEvent方法
[self.tableView beginUpdates];
[[self tableView] reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForItem: selectedRow inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)
因此,您的单元格将被渲染所有内容,但基于您隐藏或显示内容的高度.
使用输入源更新了答案
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 objectForKey@"MatchName"];
if() {
cell.heightConstraintSecondView.constant = 0;
} else {
cell.heightConstraintSecondView.constant = 59;
cell.team1.text = [matches objectForKey@"Team1"];
cell.team2.text = [matches objectForKey@"Team2"];
cell.score.text = [matches objectForKey@"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];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
889 次 |
| 最近记录: |