【问题标题】:Objective-C Reload a UITableView inside a UITableViewCellObjective-C 在 UITableViewCell 中重新加载 UITableView
【发布时间】: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 并处理表格的高度。

标签: objective-c uitableview


【解决方案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 还不够吗?
  • 问题是标题可能很短也可能很长。我不知道它需要多少行才能完全显示。
猜你喜欢
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多