显示数据的可扩展UITableView单元格 [英] Expandable UITableView cells showing datas
问题描述
我有一些按年份编目的运动比赛,每场比赛我都有最终结果,比赛日期和得分手。
I have some sport matches cataloged by year, and for every match I have the final result, the match date and the scorer(s).
我是在表视图中显示这些匹配,如下所示:
I'm showing those matches in a 'Table View', like this:
所以我想要实现的是:当点击一个单元格时,显示匹配的详细信息,如图所示。
So what I'd like to achieve is: when clicking on a cell, show the match details as shown in the picture.
我也发现了一些图书馆实现手风琴/可扩展的风格,但没有人做这个工作。他们只是扩展单元格并显示另一个单元格。
I also found some libraries to achieve the accordion/expandable style, but no-one does the job. They just expand the cell and show another cell.
推荐答案
在这种情况下,您甚至不需要使用expandable / accordion。以下是解决这个问题的方法。让我们说正常情况下你的单元格大小为40,特别点击时单元格为100.在heightForRowAtIndexPath中,你可以检查选择了哪个单元格并返回更多高度
You don't even need to use expandable/accordion in this case. Here is how you can tackle this. Lets says your cell size when normal is 40 and when particular clicked is 100. In heightForRowAtIndexPath you can check which cell is selected and return more height
if(selectedRow == indexPath.row) {
return 100;
} else {
return 40;
}
然后你可以做的是在didSelectRowAtIndexPath或clickEvent方法
Then what you can do is in didSelectRowAtIndexPath or a clickEvent method
[self.tableView beginUpdates];
[[self tableView] reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForItem: selectedRow inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];
因此,您的单元格将全部呈现,但会根据您隐藏或显示的高度内容。
So it will be your cell will be rendered all of it but based on height you are hiding or showing content.
使用输入源更新答案
ViewController.m
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];
}
}
这篇关于显示数据的可扩展UITableView单元格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!