使用“tableView:sectionForSectionIndexTitle:atIndex:”帮助滚动到TableViewHeader?

时间:2011-08-09 10:04:58

标签: iphone ios ios4 uitableview

我在TableViewController的标题中添加了一个搜索栏,我还在“sectionIndexTitlesForTableView”数组中添加了一个“{search}”。现在在右侧,我得到了字母表中的字母+顶部的搜索符号...滚动到我用过的字母部分(不是搜索字段):

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{

    return index -1;
}

现在当我点击字母A时,它会滚动到A部分,依此类推。只有我不能让“搜索符号”滚动到tableView的标题中的搜索栏...

我该怎么做?

提前谢谢你......

enter image description here enter image description here

3 个答案:

答案 0 :(得分:10)

如果搜索栏位于tableView的最顶部,您可以执行类似 -

的操作
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{

// as the search icon is at index 0, scroll to the top
    if(index == 0)    
        [tableView scrollRectToVisible:CGRectMake(0, 0, searchBar.width, searchBar.height) animated:YES];    
    return index -1;
}

否则,如果它是没有任何行的部分,你可以这样做 -

CGRect searchBarRect = [tableView rectForSection:searchBarIndex];
[tableView scrollRectToVisible:searchBarRect animated:YES];

HTH,

阿克沙伊

答案 1 :(得分:0)

你在处理xib,如果是,那么移动UITableView顶部的搜索栏 例如

UIView // your main view  
  SearchBar
  UITableView

好的,实际上你的问题对我来说并不清楚,现在你评论后我扩展了我的答案

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
      {
          // An array of strings that serve as the title of sections
      }
  

此数据源方法只是要求数据源返回表格视图部分的标题。

我建议您refer

  

根据您的图片,我将再次坚持我之前基于可用性问题的答案。为什么你不能把搜索栏永远地放在最前面,它只会吃掉一两个结果集行(好的,我给出强烈的建议 - 如果你允许用户通过点击转到搜索栏在你的searchicon上并不容易(它非常小的)sectionIndex标题一般用户不使用,如果他们使用它们只是用于直接去特定部分。)

希望我的建议可能是你的好答案。

由于

答案 2 :(得分:0)

您可以使用UITableView的另一种方法执行此操作,如下所示:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{

    if (//this condition is apply for A-Z//) {

    }
    else { //--- This is for your Search symbol---//
        [tableView setContentOffset:CGPointMake(0, 0) animated:YES];
    } 
    return (return your desire section value i.e. 1);
}