UITableview从数据数组创建字母索引

时间:2014-06-19 10:24:39

标签: ios objective-c arrays uitableview

我有一个NSMutableArray,它由一个sqlite查询填充,它按字母顺序返回我要在UITableview中显示的所有内容。

我知道要显示您在联系人应用程序等中看到的字母索引。

但是我不知道如何设置索引并从这个数组创建部分,以便每个部分都是字母表中的下一个字母。

如何获取我的数组并获取所需的部分和索引?

1 个答案:

答案 0 :(得分:0)

让我们说你的数组(NSMutableArray myArray)字母看起来像这样:

(
    {
    headerTitle = V;
    rowValues =         (
                    {
            id = 60;
            name = "Valley of the Giants (2)";
            "real_name" = "Valley of the Giants";
            "wine_count" = " (2)";
        }
    );
},
    {
    headerTitle = R;
    rowValues =         (
                    {
            id = 47;
            name = "Rothbury Estate (6)";
            "real_name" = "Rothbury Estate";
            "wine_count" = " (6)";
        },
                    {
            id = 48;
            name = "Rouge Homme (4)";
            "real_name" = "Rouge Homme";
        },
                    {
            id = 45;
            name = "Rawson\U2019s Retreat (7)";
            "real_name" = "Rawson\U2019s Retreat";
        },
                    {
            id = 46;
            name = "Rosemount Estate (36)";
            "real_name" = "Rosemount Estate";
        }
    );
},

在表格视图中,设置节数

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

部分中的行数:

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [[[myArray objectAtIndex:section] objectForKey:@"rowValues"] count];
}

章节标题

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    return [[myArray objectAtIndex:section] valueForKey:@"headerTitle"];
}

然后在cellForRowAtIndexPath中,你可以像这样访问你的信息

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *name= [[[[myArray objectAtIndex:indexPath.section] objectForKey:@"rowValues"] objectAtIndex:indexPath.row] valueForKey:@"name"];

    // And create your cell like you usually do...
}

如果您需要按字母顺序对数组进行排序,可以这样做:

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"headerTitle" ascending:YES];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];