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

iPhone:在分组 UITableview 的每个部分中重复行

iPhone + UITableView + 行高

iPhone:UITableView 部分