gpt4 book ai didi

ios - 当前 tableview 位置的 NSIndexPath

转载 作者:行者123 更新时间:2023-11-29 02:22:54 25 4
gpt4 key购买 nike

我目前正在尝试模拟网站 anchor 标记以快速导航到浏览器页面上的特定点。如果您愿意,我有一个分段控件作为超链接。见下图:

image1

随着我的表格 View 部分和行的增长,这将作为用户使用的快速工具派上用场,尤其是对于较小的设备。然而,我遇到了将滚动点与部分第一个单元格位置等同的问题,但我宁愿如果可能的话获得部分标题位置。

我的目标是在点击(简单部分)以及滚动(pickle部分)时更新segmentControl.selectedSegmentIndex,以便它是更流畅的UI交互。

我已经将我的 selectedSegmentIndex 设置为通过这些 NSIndexPathsIBAction 滚动到点击时的特定部分:

NSIndexPath *aboutIndex = [NSIndexPath indexPathForRow:0 inSection:0];
NSIndexPath *contactIndex = [NSIndexPath indexPathForRow:0 inSection:1];
NSIndexPath *publicationsIndex = [NSIndexPath indexPathForRow:0 inSection:2];
NSIndexPath *settingsIndex = [NSIndexPath indexPathForRow:0 inSection:3];

switch (self.segmentControl.selectedSegmentIndex)
{
case 0: [self.tableView scrollToRowAtIndexPath:aboutIndex atScrollPosition:UITableViewScrollPositionTop animated:YES];
break;
//etc etc
...

使用相同的代码,我将其放置在 scrollViewDidScroll: 方法中,就像您所期望的那样,但我很难获取当前 tableView 滚动点的特定索引路径。我首先尝试了这个以及 [self.tableView indexPathsForVisibleRows]:

 -(void)scrollViewDidScroll:(UIScrollView *)scrollView {

NSIndexPath *currentIndex = [self.tableView indexPathForRowAtPoint:CGPointMake(0, self.tableView.contentOffset.y)];
NSLog(@"current is %@", currentIndex);

//And then changing the selectedSegmentIndex on scroll:

if ((currentIndex >= aboutIndex) && (currentIndex < contactIndex)) {
self.segmentControl.selectedSegmentIndex = 0;
// other else if's
...
}

有时,当它想要基本上,并且仅在向下滚动时,我会在手动向上滚动时得到 null 。所以我将其更改为:

if ([currentIndex isEqual:aboutIndex]) {
self.segmentControl.selectedSegmentIndex = 0;
} else if ([currentIndex isEqual:contactIndex]) {
self.segmentControl.selectedSegmentIndex = 1;
} else if ([currentIndex isEqual:publicationsIndex]) {
self.segmentControl.selectedSegmentIndex = 2;
} else if ([currentIndex isEqual:settingsIndex]) {
self.segmentControl.selectedSegmentIndex = 3;
}

除了向上滚动之外,它一直有效。为什么我向上滚动时出现空值?

最佳答案

要回答您的最后一个问题(“有人知道如何获取部分标题的来源吗?”),UITableView 有一个方法 - (CGRect)rectForSection:(NSInteger)section 将返回该部分的 CGRect。请参阅文档:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/index.html

由于标题应该在部分的顶部,您应该能够使用矩形的原点作为标题的原点(当然可能必须考虑文本插入)

或者,您也可以使用 - (CGRect)rectForHeaderInSection:(NSInteger)section,因为两者的顶部坐标应该相同。

当然,您可以将其与滚动位置进行比较,以获取这些 CGRect 的相对屏幕位置。

关于ios - 当前 tableview 位置的 NSIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27916569/

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