gpt4 book ai didi

iphone - 如何将 UITableView 滚动到不包含行的部分?

转载 作者:行者123 更新时间:2023-12-03 18:14:49 33 4
gpt4 key购买 nike

在我正在开发的应用程序中,我有一个普通样式的 UITableView,它可以包含一个包含零行的部分。我希望能够使用scrollToRowAtIndexPath:atScrollPosition:animated: 滚动到此部分,但由于缺少子行,当我尝试滚动到此部分时出现错误。

Apple 的日历应用程序能够执行此操作,如果您在 ListView 中查看日历,并且日历中没有今天的事件,则会为今天插入一个空白部分,您可以使用“今天”按钮滚动到它在屏幕底部的工具栏中。据我所知,Apple 可能正在使用定制的 UITableView,或者他们正在使用私有(private) API...

我能想到的唯一解决方法是在 0 像素高的位置插入一个空的 UITableCell 并滚动到该位置。但据我了解,具有不同高度的单元格对于滚动性能来说确实很糟糕。不过我还是会尝试一下,也许性能损失不会太严重。

更新

由于似乎没有解决方案,我已向苹果提交了错误报告。如果这也影响到您,请提交 rdar://problem/6263339 的副本(Open Radar link) 如果您希望更快地解决此问题。

更新#2

我对这个问题有一个不错的解决方法,请看下面我的答案。

最佳答案

更新:看起来这个错误在 iOS 3.0 中已修复。您可以使用以下 NSIndexPath 滚动到包含 0 行的部分:

[NSIndexPath indexPathForRow:NSNotFound inSection:section]

我将在这里为仍然使用 2.x SDK 维护项目的任何人留下我原来的解决方法。

<小时/>

找到了一个不错的解决方法:

CGRect sectionRect = [tableView rectForSection:indexOfSectionToScrollTo];
[tableView scrollRectToVisible:sectionRect animated:YES];

上面的代码将滚动表格 View ,以便所需的部分可见,但不一定位于可见区域的顶部或底部。如果您想滚动以使该部分位于顶部,请执行以下操作:

CGRect sectionRect = [tableView rectForSection:indexOfSectionToScrollTo];
sectionRect.size.height = tableView.frame.size.height;
[tableView scrollRectToVisible:sectionRect animated:YES];

根据需要修改sectionRect,将所需部分滚动到可见区域的底部或中间。

关于iphone - 如何将 UITableView 滚动到不包含行的部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/159821/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com