如何像加载单元格一样动态加载节标题

发布于 2024-12-05 13:07:12 字数 343 浏览 1 评论 0原文

我有一个 UITableView,其中有很多行和很多部分(超过 500 个部分)。 拥有很多行并不是那么糟糕,因为使用 dequeueReusableCellWithIdentifier 方法仅加载可见行。 问题是每次我执行 [tableView reloadData] 时都会加载所有节标题。

有没有一种方法可以使用出列的节标题,就像我将其用于行一样?

如果没有,我能想到的唯一两个选择是:

  1. 我自己处理节头队列。
  2. 将节标题设置为自定义单元格并管理我自己的节单元格映射。

这两种解决方案都非常复杂,因为我使用 NSFetchedResultsController。

I have a UITableView with a lot of rows and a lot of sections (over 500 sections).
Having a lot of rows is not so bad, because only the visible rows are loaded using the dequeueReusableCellWithIdentifier method.
The problem is that ALL of the section headers are loaded each time i perform [tableView reloadData].

Is there a way to use dequeued section headers the same way i use it for rows?

If not, the only two options i can think of is:

  1. handling the section header queue my self.
  2. Making the section headers to be custom cells and managing the section-cell mapping my self.

Both solutions are very complicated because i use NSFetchedResultsController.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

段念尘 2024-12-12 13:07:12

如果您确定每次*都会加载所有节标题,则意味着这是系统行为。

使用 NSFetchedResultsController 有什么复杂之处?如果确实如此,也许您应该编写自己的 UITableViewDelegate/DataSource 以获得更大的灵活性。

*即

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

或被调用 X 次。

 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

,当您发送 [tableView reloadData] 消息时,

If you are sure that all the section headers are loaded each time*, it means it's a system behavior.

What is complicated by using a NSFetchedResultsController ? If if really is, maybe you should write your own UITableViewDelegate/DataSource to have more flexibility.

*i.e. that

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

or

 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

are called X times when you send the [tableView reloadData] message.

嘿嘿嘿 2024-12-12 13:07:12

这个问题在 iOS6 中得到了解决:
UITableView 的 dequeueReusableHeaderFooterViewWithIdentifier 方法。

This issue was solved in iOS6 with:
UITableView's dequeueReusableHeaderFooterViewWithIdentifier method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文