gpt4 book ai didi

iphone - 强制 UITableView 滚动到单元格顶部

转载 作者:技术小花猫 更新时间:2023-10-29 10:57:54 25 4
gpt4 key购买 nike

有没有办法让 UITableViews 滚动单元格到单元格?也就是说,Table View 的顶部始终是 UITableViewCell 的顶部。

我尝试了分页标志,但它似乎滚动了整个“页面”。我只想要单元格到单元格的滚动。

谢谢

最佳答案

UTTableViewUIScrollView 的子类,因此您可以使用 scrollViewDidScroll 方法在滚动后重新排列您的 TableView 滚动位置。

您可以使用 tableView.contentOffset 获取当前滚动位置。通过将它除以一个有意义的数字,您可以得到哪个单元格在顶部。

int cellIndex = tableView.contentOffset / cellHegiht;

或者您可以像这样在中心(顶部、底部)获取当前可见的单元格:

NSArray *indexPathsForVisibleRows = [tableView indexPathsForVisibleRows];
NSIndexPath *selectedIndexPath = [indexPathsForVisibleRows objectAtIndex:(indexPathsForVisibleRows.count / 2)]; //this gets center cell

在计算出哪个单元格应该被其顶部(或底部)的边缘点击后,您可以通过调用来校正单元格边缘的漂移:

[tableView scrollToRowAtIndexPath:selectedIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

您可以使用 UIScrollViewDelegate 方法来激活捕捉。您可以在滚动动画完成时或动画仍在继续时激活。这将产生不同的用户交互,并且不能说一个比另一个更好。

但只是实现以下方法,没有其他东西看起来会成为我的最爱:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset {
int cellHeight = 41;
*targetContentOffset = CGPointMake(targetContentOffset->x,
targetContentOffset->y - (((int)targetContentOffset->y) % cellHeight));
}

当用户触摸 TableView 以通知应用程序时调用此方法。 targetContentOffset 是一个 inout 变量,因此您可以在动画继续时实际设置最终滚动位置。使用正确的 cellHeight,您的 TableView 将始终捕捉到单元格。

关于iphone - 强制 UITableView 滚动到单元格顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7797693/

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