表格按字母顺序查看组织

时间:2012-05-19 16:53:31

标签: uitableview nsmutablearray alphabetical sectionheader

好吧,我的下一个困境。我已经完成了大量的谷歌搜索,似乎有几种方法可以解决它,但似乎没有一个方法适合我的表格视图的结构。我正在使用带有ARC和故事板的Xcode 4.3.2。我有一个普通的视图表视图。我的表格包含城市及其部门的列表(每行一个城市),当用户选择一个城市时,他们将被推送到关于该城市的详细视图。我想按字母顺序组织我的表格,并带有节标题。任何建议,提示,教程链接都将不胜感激。

我在表格视图.m

中设置了这样的NSMutable数组
NSMutableArray *dept;   

- (void)viewDidLoad

{
[super viewDidLoad];

dept = [[NSMutableArray alloc] init];

City *thedept = [[City alloc] init];
[thedept setCityname:@"Albany"];
[thedept setPhone:@"5551237890"];
[dept addObject:thedept];

thedept = [[City alloc] init];
[thedept setCityname:@"Boston"];
[thedept setPhone:@"5556543435"];
[dept addObject:thedept];

thedept = [[City alloc] init];
[thedept setCityname:@"Springfield"];
[thedept setPhone:@"5553456323"];
[dept addObject:thedept];

thedept = [[City alloc] init];
[thedept setCityname:@"Tallahassee"];
[thedept setPhone:@"5552450988"];
[dept addObject:thedept];

thedept = [[City alloc] init];
[thedept setCityname:@"Vacouver"];
[thedept setPhone:@"5551312555"];
[dept addObject:thedept];

节标题可以是字母表中的字母(A,B,C,D ......)。我想我需要通过他们的第一个字母预先组织我的城市,并且可能根据字母命名该部分(例如“sectionAcities”)。我给的城市只有几个,我总共有100个。

2 个答案:

答案 0 :(得分:1)

您需要使用以下UITableViewDataSource方法才能实现此目的。

sectionIndexTitlesForTableView:
tableView:titleForHeaderInSection:
tableView:sectionForSectionIndexTitle:atIndex:

以下是该developer.apple.com上出现的TheElements app的链接,其实际执行此操作 - http://developer.apple.com/library/ios/#samplecode/TheElements

答案 1 :(得分:0)

在您的情况下,您必须使用以下代码使用基于对象的排序,而不是在示例

中完成简单排序

self.tableArray = [[self.tableArray sortedArrayUsingComparator:^ NSComparisonResult(Object * first,Object * second){

    NSString *name1=[first name];
    NSString *name2=[second name];
    return [name1 compare:name2];

}]mutableCopy] ;

在此之后,您将获得已排序的数组,您可以使用此数组来生成数组字典。