4

我刚开始使用 ios,我被困在UITableView.

我想在视图的右侧实现索引栏。我已经实现了这一点,但是当我点击索引栏上的部分时,它不起作用。

这是我的代码。这indexArray是“AZ”元素,finalArray是我的UITableView可变数组。

请告诉我应该在sectionForSectionIndexTitle.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return [finalArray count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:         (NSInteger)section
{
    return [finalArray objectAtIndex:section];
}

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return indexArray;
}

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

}
4

1 回答 1

9

这可能是 中最令人困惑的方法之一UITableViewDataSource,最好考虑一个示例:

假设您有一个包含 4 个项目的表格视图:

section index - 0 section title - 'A' 
items: ['Apple', 'Ant']

section index - 1 section title - 'C'
items: ['Car', 'Cat']

然后,您有 26 个部分索引标题(表视图右侧的索引):A - Z

现在用户点击字母“C”,你会接到电话

tableView:sectionForSectionIndexTitle:@"C" atIndex:2

您需要返回 1 -“C”部分的部分索引。

如果用户点击“Z”,您还必须返回 1,因为您只有 2 个部分,而 C 最接近 Z。

在简单的情况下,您的表格视图中有与右侧索引相同的部分,可以这样做:

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

否则,这取决于您的设置。您可能需要在部分标题中查找标题:

 NSInteger section = [_sectionTitles indexOfObject:title];
 if (section == NSNotFound) // Handle missing section (e.g. return the nearest section to it?)
于 2013-07-09T12:58:30.230 回答