Objective-C 在 UITableViewCell 中重新加载 UITableView
Posted
技术标签:
【中文标题】Objective-C 在 UITableViewCell 中重新加载 UITableView【英文标题】:Objective-C Reload a UITableView inside a UITableViewCell 【发布时间】:2013-11-12 11:04:37 【问题描述】:我有一个可下载项目的 UITableView,我使用另一个 UITableView 来获取下载项目信息。如何重新加载所有 UITableViewCell 的 UiTableView?
我尝试使用[downloadList reloadData];
,但它只会刷新大表。
编辑: 我正在尝试做这样的事情:jsfiddle.net/WrNFU。我希望细节正确对齐,但问题是标题可能太长,我不确定标题将使用多少行。我使用了第二个表格,因为 heightForRowAtIndexPath 函数可以让我调整标题行的高度。
答案:
使用我在这里找到的代码:iPad: Iterate over every cell in a UITableView?
for (int section = 0; section < [downloadList numberOfSections]; section++)
for (int row = 0; row < [downloadList numberOfRowsInSection:section]; row++)
NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section];
UITableViewCell* cell = [downloadList cellForRowAtIndexPath:cellPath];
UITableView *tempTableView = (UITableView *)[cell viewWithTag:110];
[tempTableView reloadData];
【问题讨论】:
为什么你不使用一个表格视图自定义单元格?包含 4 个标签、2 个静态文本和 2 个是动态的。其中将标题标签 no.of.lines 设为 3 并处理表格的高度。 【参考方案1】:使用单个 UITableView(无需使用嵌套的 tableview),您可以将每个项目(书?)视为单个 UITableViewCell 并处理不同大小的内容。
需要计算UITableViewCell的高度并设置
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
让tableview知道内容的大小。当然,您还必须调整标签的大小以适合文本。
还有
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_ios(3_0);
下载完成后可用于重新加载单个单元格。
仍然不清楚为什么要重新加载单个单元格,是否在显示视图时开始下载每个项目?您是只下载显示的文本还是完整的文件?我觉得它可以以更简单的方式处理。
【讨论】:
如何访问内部表格视图?使用标签?因为我不能在内表视图上使用 IBOutlet。 标签可能是个好主意。但是你确定你需要有内部表格视图吗?你不能使用部分吗? 我正在尝试在我的内部表格视图中显示类似的内容:标题:XXXXXXXX XXXXXXXX 作者:XXXXX 一个简单的 UITableViewCell 还不够吗? 问题是标题可能很短也可能很长。我不知道它需要多少行才能完全显示。以上是关于Objective-C 在 UITableViewCell 中重新加载 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Objective-C 的 UITableView 中使 UITableViewRowAction 完全透明
如何在objective-C中制作平滑的UITableView [关闭]
如何使用 UIImages 创建 UITableView? - 可可/Objective-C
如何在 Objective-C 中的 UITableview 的 Row 和 Section 上添加一个 UIButton