Iphone 如何按字母顺序创建分区/分组表视图

Iphone 如何按字母顺序创建分区/分组表视图,iphone,uitableview,ios4,Iphone,Uitableview,Ios4,我正在创建一个解析巨大xml文件并将数据放入表视图的应用程序。用户可以在搜索栏中输入文本来搜索表视图 现在,我想把表视图做成一个分段视图,按算术分组。由于表视图是巨大的,搜索功能包括在内,我想知道如何使表视图成为部分。。。任何教程或源代码都会有很大帮助…您必须使用配置为节索引的表视图 看 填充索引列表 […]索引列表是普通样式的表视图,通过三种UITableViewDataSource方法专门配置: sectionIndexTitlesForTableView: tableView:title

我正在创建一个解析巨大xml文件并将数据放入表视图的应用程序。用户可以在搜索栏中输入文本来搜索表视图


现在,我想把表视图做成一个分段视图,按算术分组。由于表视图是巨大的,搜索功能包括在内,我想知道如何使表视图成为部分。。。任何教程或源代码都会有很大帮助…

您必须使用配置为节索引的表视图

填充索引列表 […]索引列表是普通样式的表视图,通过三种UITableViewDataSource方法专门配置:

  • sectionIndexTitlesForTableView:
  • tableView:titleForHeaderInSection:
  • tableView:sectionForSectionIndexTitle:atIndex:
第一个方法返回用作索引项的字符串数组(按顺序),第二个方法将这些索引字符串映射到表视图节的标题(它们不必相同),第三个方法返回与用户在索引中点击的条目相关的节索引


用于填充索引列表的数据应进行组织以反映此索引模型。具体来说,您需要构建一个数组数组。每个内部数组对应于表中的一个部分;节数组在外部数组中根据流行的排序方案进行排序(或整理),通常是字母顺序方案(例如,A到Z)。此外,每个节数组中的项都会被排序。您可以自己构建和排序这个数组数组,但幸运的是UILocalizedIndexedCollation类使构建和排序这些数据结构以及向表视图提供数据的任务变得更加容易。该类还根据当前的本地化情况整理数组中的项。

您可以在

首先,您必须使用NSSortDescriptor对数据进行排序,然后创建一个字典,其中键是数据的第一个字母。每个键都应该有一个从同一个字母开始的记录数组

你可以照我说的做

-(NSMutableDictionary *)fillingDictionary:(NSMutableArray *)ary
{

// This method has the real magic of this sample
// ary is the unsorted array
// keyArray should be global as you need to access it outside of this function

     keyArray=[[NSMutableArray alloc]init];
    [keyArray removeAllObjects];

    NSMutableDictionary *dic=[[NSMutableDictionary alloc]init];

    // First sort the array

    [ary sortUsingSelector:@selector(compare:)];


    // Get the first character of your string which will be your key

    for(NSString *str in ary)
    {
        char charval=[str characterAtIndex:0];
        NSString *charStr=[NSString stringWithUTF8String:&charval];
        if(![keyArray containsObject:charStr])
        {
            NSMutableArray *charArray=[[NSMutableArray alloc]init];
            [charArray addObject:str];
            [keyArray addObject:charStr];
            [dic setValue:charArray forKey:charStr];
        }
        else
        {
            NSMutableArray *prevArray=(NSMutableArray *)[dic valueForKey:charStr];
            [prevArray addObject:str];
            [dic setValue:prevArray forKey:charStr];

        }

    }
    return dic;

}

谢谢你的详细解释。u plz可以提供任何教程或源代码,以便我能更好地理解它。。。!!!元素示例代码给出了一个示例,该代码在[keyArray addObject:charStr]处崩溃;其中charStr为null。为什么使用NSString*charStr=[NSString stringWithUTF8String:&charval];