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]