iPhone UITableView 与 UISearchBar 和刷新部分索引
Posted
技术标签:
【中文标题】iPhone UITableView 与 UISearchBar 和刷新部分索引【英文标题】:iPhone UITableView with UISearchBar and refreshing Section Index 【发布时间】:2009-05-08 10:29:44 【问题描述】:我有一个 UITableView,顶部有一个 UISearchBar。
我还使用 Section Index 代理在右侧显示 ABC...XYZ。
当我单击搜索框并且键盘从底部弹出时出现问题,部分索引被挤压,因此仅显示 AD...*Z - 当我关闭搜索并他们的键盘消失了,索引保持在这种“压扁”状态,直到我滚动或类似的。
// animate the searchbar
[UIView beginAnimations:nil context:NULL];
CGRect tempRect = [[self searchBar] frame];
tempRect.size.width = 320-kMarginRight;
[[self searchBar] setFrame:tempRect];
[UIView commitAnimations];
// animate the search index back into view
for (UIView *view in [[self tableView] subviews])
if ([view respondsToSelector:@selector(moveIndexIn)])
MovableTableViewIndex *index = (MovableTableViewIndex*)view;
[index moveIndexIn];
// try a whole load of stuff to try and get the section indexes to draw again properly
// none of which work!
[searchBar setText:@""];
[searchBar resignFirstResponder];
letUserSelectRow = YES;
searching = NO;
[[self navigationItem] setRightBarButtonItem:nil];
[[self tableView] setScrollEnabled:YES];
[[self tableView] reloadData];
[[self tableView] flashScrollIndicators];
[[self tableView] sizeToFit];
[[self tableView] zoomScale];
[[self tableView] reloadSectionIndexTitles];
我的问题是,有人见过这种行为吗?有没有办法重新绘制 RHS 上的部分索引([[self tableView] reloadData]
不成功)
谢谢一百万!
【问题讨论】:
【参考方案1】:您应该在完全激活搜索时禁用索引绘制。只需在您的委托中返回 nil,如下所示:
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView if ([self.searchDisplayController isActive]) 返回零; ...【讨论】:
【参考方案2】:你可以试试
- (void)flashScrollIndicators
它刷新滚动条并希望也刷新部分索引?
【讨论】:
我已经编辑了我上面的帖子以显示我正在使用的确切代码......无济于事!【参考方案3】:很好用!!!
[searchBar setContentInset:UIEdgeInsetsMake(5, 0, 5, 35)];
【讨论】:
这个实际上对我有用,但不幸的是它是一个未记录的 API :(以上是关于iPhone UITableView 与 UISearchBar 和刷新部分索引的主要内容,如果未能解决你的问题,请参考以下文章
UITableview 与 iPhone X 上的主页指示器合并
iPhone UITableView 与 UISearchBar 和刷新部分索引
UITableView 和 SearchBarController 视图 iPhone