显示数据的可扩展 UITableView 单元格
Posted
技术标签:
【中文标题】显示数据的可扩展 UITableView 单元格【英文标题】:Expandable UITableView cells showing datas 【发布时间】:2016-08-17 23:50:39 【问题描述】:我有一些按年份分类的体育比赛,每场比赛我都有最终结果、比赛日期和得分手。
我在“表格视图”中显示这些匹配项,如下所示:
所以我想要实现的是:点击一个单元格时,显示匹配的详细信息,如图所示。
我还找到了一些库来实现手风琴/可扩展风格,但没有人能胜任。他们只是扩展单元格并显示另一个单元格。
【问题讨论】:
解决问题的其他方法***.com/questions/29678471/… 非常有帮助!谢谢@DogCoffee! Drop-Down List in UITableView in ios的可能重复 【参考方案1】:在这种情况下,您甚至不需要使用可扩展/手风琴。这是您可以解决的方法。让我们说正常时的单元格大小为 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];
因此,您的单元格将全部呈现,但根据您隐藏或显示内容的高度。
使用输入源更新答案
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];
【讨论】:
不错!那么我应该在哪里添加匹配信息? (如team1[selected_cell], team2[selected_cell]
等?在beginupdates
和endUpdates
之间?
您只需要重新加载所选单元格并在 heightforRow 中更改其高度...您是动态创建单元格吗?您需要创建包含所有元素的单元格,只需在选择取消选择时更改其高度以显示或隐藏匹配详细信息。
我将所有的比赛细节保存在数组中,所以基本上所有的单元格都是一样的。当我选择cell1时,它将显示该单元格(匹配)的详细信息,当我选择cell2时,它将显示match2详细信息,依此类推...
我应该使用界面生成器执行此操作吗?创建一些文本字段并从数组中检索内容?
只需查看github.com/quantumarun/Demos/tree/master/ExpandTableCellDemo 的示例演示。这只是一个基本概念,您必须根据需要对其进行更改。【参考方案2】:
您可以为此使用 HVtableview,试试这个链接 https://github.com/xerxes235/HVTableView
【讨论】:
【参考方案3】:更简洁的方法是创建 2 个具有不同标识符的单元格,并在运行时单击该单元格时更改它。检查这个问题:Drop-Down List in UITableView in iOS
【讨论】:
【参考方案4】:尝试以下方法之一:
obj-C:KMAccordionTableViewController 斯威夫特:AccordionTableViewController【讨论】:
以上是关于显示数据的可扩展 UITableView 单元格的主要内容,如果未能解决你的问题,请参考以下文章