代码之家  ›  专栏  ›  技术社区  ›  petert

uiTableView中的uiSearchBar

  •  3
  • petert  · 技术社区  · 15 年前

    我试图模仿类似于iPod应用程序的表格视图的行为-它是一个分区的表格视图,在右侧有一个分区索引,在顶部有一个搜索栏,但在显示视图时最初是隐藏的。

    我使用的是sdk 3.1.2和ib,所以只需拖动 UISearchDisplayController 在我的笔尖-它连接所有的东西寻找。问题开始是因为我在添加 UISearchBar UITableView ,因为如果我理解正确的话,我必须这样做,这样我就可以直接通过触摸部分索引中的搜索图标跳到搜索栏?当表视图出现时,我看到搜索栏,但它已经调整了大小,现在在顶部的节索引后面有一个白色块。它不带颜色 搜索栏 有趣的是,它与界面生成器中显示的不同。

    我找到了一个添加小导航栏和 搜索栏 在一个 UIView ,然后将其添加到表视图单元格。这是可行的,但是导航栏背景的颜色是您通常期望的颜色(灰色),而不是上面提到的不同颜色。更有趣的是,如果我点击搜索栏开始搜索,然后点击取消,所有都会被修复。当搜索栏为时,整个TableView单元格的背景是相同的吗?

    2 回复  |  直到 10 年前
        1
  •  12
  •   petert    13 年前

    回答了我自己的问题,但可能对其他初学者有所帮助:

    • 加载视图时,将搜索栏放在表视图标题中,将ContentOffset向下滚动到此搜索栏的高度(通常为44像素),但易于动态检查。
    • 在节索引中添加带有“搜索”的搜索图标
    • 将sectionindexsection设置为搜索-1
    • 处理节索引触摸时,使用“特殊”索引值搜索“-1”(将ContentOffset滚动回(0,0)

    更新 :使用字符串常量 UITableViewIndexSearch 字符串代替未记录的字符串“search”-即在实现以下内容时将其作为数组项之一返回:

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

    在里面 UITableViewDataSource .

        2
  •  1
  •   João Nunes    12 年前

    将搜索控制器放在TableView的开头 试试这个:

    - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
        if (index==0){
            [tableView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO];
            return -1;
        }
    ...
    }
    
    
    - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
            NSMutableArray * retValue =[NSMutableArray arrayWithArray:[YOUR ARRAY]];
            [retValue insertObject:UITableViewIndexSearch atIndex:0];
           return retValue;
     }