带有右侧索引,部分和搜索栏的UITableView会导致右侧索引变为已被删除

时间:2011-09-25 03:58:21

标签: ios uitableview

我有一个带有部分,搜索栏和右侧索引的UITableView。最初,一切正常并且绘制得恰到好处。但是,当我键入我的搜索栏然后单击取消时,右索引未正确重绘。以下是单击“取消”按钮后索引的显示方式。

Squished Index

这是正常的:

Normal

[更新]

出于某种原因,我需要使用此方法来使我的表reloadData正常工作:

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {...}

而不是这个方法:

- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {...}

这是我的方法:

/* Reset Table here
 */
-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
    NSLog(@"\n===searchBarTextDidEndEditing");
    self.isFiltered = NO;
    self.tableView = self.myTableView;

    [self genIndexWithFilter:NO];
    [self.tableView reloadData];

}

如果有人可以解释细微的细节,我会投票并接受他们的回答。

1 个答案:

答案 0 :(得分:0)

假设您的self.isFiltered布尔值是控制将哪些数据呈现到屏幕的变量;完整列表或精炼搜索集。

调用-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { ...}时,会设置self.isFiltered标志,然后通过重新加载表。 [self.tableView reloadData];重新加载表,检查是否呈现过滤后的数据。

当调用reloadData时,它会检查要渲染的部分数量。如果做得好,你可以有类似的东西......

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {

    if(self.isFiltered) //If searching
        return nil; //Return empty section
    else
        return sectionSelectionArray; //Return list of headers
}