用tableview寫了一個簡單的通訊錄然低,話不多說喜每,咱們慢慢構(gòu)建。
首先雳攘,你需要一個tableview(這是肯定的带兜。。代碼就不貼了哈)吨灭,接下來刚照,你需要對數(shù)據(jù)源進(jìn)行處理,按A-Z首字母分類喧兄。
UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation];
[self.sectionHeaderArray addObjectsFromArray:[indexedCollation sectionTitles]];
NSMutableArray *sortarray = [[NSMutableArray alloc] init];
for (int i = 0; i < self.sectionHeaderArray.count; i++) {
NSMutableArray *sectionArray = [[NSMutableArray alloc] init];
[sortarray addObject:sectionArray];
}
for (NSString *str in self.dataArray) {
NSString *fitst = [EaseChineseToPinyin pinyinFromChineseString:str];
NSInteger index = [indexedCollation sectionForObject:[fitst substringFromIndex:0] collationStringSelector:@selector(uppercaseString)];
[sortarray[index] addObject:str];
}
//每個section內(nèi)的數(shù)組排序
for (int i = 0; i < [sortarray count]; i++) {
NSArray *array = [[sortarray objectAtIndex:i] sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
NSString *firstLetter1 = [EaseChineseToPinyin pinyinFromChineseString:obj1];
firstLetter1 = [[firstLetter1 substringToIndex:1] uppercaseString];
NSString *firstLetter2 = [EaseChineseToPinyin pinyinFromChineseString:obj2];
firstLetter2 = [[firstLetter2 substringToIndex:1] uppercaseString];
return [firstLetter1 caseInsensitiveCompare:firstLetter2];
}];
[sortarray replaceObjectAtIndex:i withObject:[NSMutableArray arrayWithArray:array]];
}
//去掉空的section
for (NSInteger i = [sortarray count] - 1; i >= 0; i--) {
NSArray *array = [sortarray objectAtIndex:i];
if ([array count] == 0) {
[sortarray removeObjectAtIndex:i];
[self.sectionHeaderArray removeObjectAtIndex:i];
}
}
[self.sortArray addObjectsFromArray:sortarray];
[self.tableView reloadData];
接下來无畔,你要給tableview設(shè)置一個索引。
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
return self.sectionHeaderArray;
}
最重要的兩步已經(jīng)寫完了哈吠冤,希望各位多多指教浑彰,附上demo地址:https://github.com/ioscick/UITableView-preference