像iOS联系人应用程序索引

时间:2013-07-16 10:24:24

标签: iphone ios ipad contacts

我想创建一个类似于iOS联系人应用的视图,

  

基本上我想要的是,位于右侧的垂直ABCDEFG....   当用户点击我想要的字符M时,此图片的一侧   得到角色M我该如何实现这个目标?有没有iOS   控制哪个给我这个'ABCDEF ......?

感谢advnace。

修改

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return [[NSArray arrayWithObject:UITableViewIndexSearch] arrayByAddingObjectsFromArray:
            [[UILocalizedIndexedCollation currentCollation] sectionIndexTitles]];
}

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
    if (title == UITableViewIndexSearch)
    {
        CGRect searchBarFrame = self.searchDisplayController.searchBar.frame;
        [tableView scrollRectToVisible:searchBarFrame animated:YES];

        return -1;
    }
    else {
        UILocalizedIndexedCollation *currentCollation = [UILocalizedIndexedCollation currentCollation];
        NSLog(@"selected charecter=%ld",(long)[currentCollation sectionForSectionIndexTitleAtIndex:index]);
        return [currentCollation sectionForSectionIndexTitleAtIndex:index-1];
    }
}

1 个答案:

答案 0 :(得分:12)

您需要实现这两种方法:

// return list of section titles to display in section index view (e.g. "ABCD...Z#")
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;                                                    
// tell table which section corresponds to section title/index (e.g. "B",1))
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index;

使用相应的数据源:

例如,如果您有一个带

的数组
`@"Cat", @"Mouse", @"Dog", @"Horse", @"Duck", @"Monkey"`

然后你会为sectionIndexTitlesForTableView返回和数组为:

`@[@"C", @"D", @"H", @"M"]`

因为@"Dog"@"Duck"适用于@"D"@"Mouse"@"Monkey"适用于@"M",依此类推。

当然,对于sectionForSectionIndexTitle,您将返回该索引的相应索引。 (@"D"为1,@"M"等为3。)