UITableview 从数据数组创建字母索引
Posted
技术标签:
【中文标题】UITableview 从数据数组创建字母索引【英文标题】:UITableview create alphabetic indexing from data array 【发布时间】:2014-06-19 10:24:39 【问题描述】:我有一个 NSMutableArray,它由一个 sqlite 查询填充,它按字母顺序返回我想在 UITableview 中显示的所有内容。
我知道想要显示您在联系人应用程序等中看到的字母索引。
但是我不确定如何设置索引并从此数组创建部分,以便每个部分都是字母表中的下一个字母。
我将如何获取我的数组并获取所需的部分和索引?
【问题讨论】:
这个问题似乎离题了,因为它在 Apple 文档中得到了解决。 @PeterDeWeese 你能发个链接吗?我找不到有关该主题的任何内容 这是一个教程:iphonedevcentral.com/indexed-uitableview-tutorial 这是苹果文档:developer.apple.com/library/ios/documentation/uikit/reference/… 还要检查 UITableViewDataSource 的文档或标题,尤其是- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView; // return list of section titles to display in section index view (e.g. "ABCD...Z#")
【参考方案1】:
假设您的带有字母的数组 (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]];
【讨论】:
以上是关于UITableview 从数据数组创建字母索引的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中按字母顺序对 MediaQuery 的 ArtistQuery 数组进行排序