UITableView 滚动到索引被破坏

Posted

技术标签:

【中文标题】UITableView 滚动到索引被破坏【英文标题】:UITableView scroll to index is broken 【发布时间】:2015-06-29 10:56:55 【问题描述】:

我通过实现sectionIndexTitlesForTableView:tableView:sectionForSectionIndexTitle:atIndex: 这两种方法在我的UITableView 中实现了索引。起初它可以工作,但经过几周的开发后,我注意到它现在已经坏了。

更准确地说,每当我触摸侧面的索引时,我仍然会触发后一个事件,它会返回正确的索引,但表格不会跳转到该部分,后者内部的调用也不会显式向下滚动到该部分的函数(以scrollToRowAtIndexPath:atScrollPosition: 的形式)执行任何远程类似滚动的操作。

有谁知道这里可能出了什么问题?我知道没有太多可用的信息...我很肯定它以前有效。

一些代码sn-ps

...

indexList = @[@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J",
              @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T",
              @"U", @"V", @"W", @"X", @"Y", @"Z", @"#"];
...

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 
    return indexList;


- (NSInteger)tableView:(UITableView *)tableView 
    sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index 
    return index;

更有趣的是:我认为这是由于第二个搜索表与原始表共享委托!索引适用于搜索表,但不适用于原始表...

任何 cmets 都会有所帮助!

【问题讨论】:

【参考方案1】:

非常有趣的是,似乎当我们为UITableView 定义索引时,显示索引的视图不是表视图的子视图。

我依靠设置搜索表的 alpha 值来淡入/淡出以在搜索和非搜索模式之间切换,不知道搜索表的索引视图覆盖了原始表。

如果其他人遇到此问题,请尝试使用 bringSubviewToFront: 而不是更改 alpha!

【讨论】:

以上是关于UITableView 滚动到索引被破坏的主要内容,如果未能解决你的问题,请参考以下文章

什么时候设置更改 heightForRowAt UITableView 动画被破坏

在具有滚动索引的 UITableView 中延迟加载图像

防止表视图被重用(MVVM)

UITableView 在旋转时使用自动布局调整大小

iOS UITableView在过滤时滚动插入

UITableView滚动到不需要的索引或位置