菜鸟教程小白 发表于 2022-12-13 11:39:21

ios - 使用 sectionForSectionIndexTitle 在 UITableView 中快速滚动


                                            <p><p>我想通过点击 <code>UITableView</code> 侧面的 <code>sectionIndexTitles</code> 来允许滚动浏览我的 <code>UITableView</code>。到目前为止,我的解决方案如下:</p>

<pre><code>- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
    NSIndexPath *matchingIndexPathForTitle = ;
    if (matchingIndexPathForTitle) {
      [tableView scrollToRowAtIndexPath:matchingIndexPathForTitle
                         atScrollPosition:UITableViewScrollPositionTop animated:YES];
    }
    return 1;
}
</code></pre>

<p>但似乎<strong>从 iOS9 开始它总是滚动到 <code>UITableView</code></strong></p> 的顶部

<p>我可以保证 <code>matchingIndexPathForTitle</code> 是正确的(例如第 1 节,第 22 行),并且更改为 <code>animated:NO</code> 也没有什么不同。</p >

<p>你有吗</p>

<ol>
<li>对这种奇怪的行为有什么解释吗?或</li>
<li>对如何实现 iOS 9 的快速滚动有什么建议吗?</li>
</ol></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>由于 <code>sectionForSectionIndexTitle</code> 负责滚动到右侧部分,而不是单元格,因此在此方法中返回有效的部分索引号将取消所有自定义滚动事件。 </p>

<p>为了滚动到一个单元格,必须阻止滚动到该部分。这可以通过返回无效的节索引来完成,例如-1</p>

<pre><code>- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
    NSIndexPath *matchingIndexPathForTitle = ;
    if (matchingIndexPathForTitle) {
      [tableView scrollToRowAtIndexPath:matchingIndexPathForTitle
                         atScrollPosition:UITableViewScrollPositionTop animated:YES];
    }
    return -1; // this will do the trick and not scroll to any section
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 sectionForSectionIndexTitle 在 UITableView 中快速滚动,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/33518973/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/33518973/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 sectionForSectionIndexTitle 在 UITableView 中快速滚动