我有一个带有部分,搜索栏和右侧索引的UITableView。最初,一切正常并且绘制得恰到好处。但是,当我键入我的搜索栏然后单击取消时,右索引未正确重绘。以下是单击“取消”按钮后索引的显示方式。
这是正常的:
[更新]
出于某种原因,我需要使用此方法来使我的表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]; }
如果有人可以解释细微的细节,我会投票并接受他们的回答。
答案 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
}