url:http://mobile.9sssd.com/ios/art/967
#import <UIKit/UIKit.h>
2 @interface HomeViewController : UIViewController
3 <UITableViewDelegate, UITableViewDataSource>{
4 }
5 @property (nonatomic, retain) NSDictionary *contactTitles;//存储所有的联系人信息
6 @property (nonatomic, retain) NSArray *groups;//所有分类名称存入数组中
7 @end
3. HomeViewController.m中添加代码
View Row Code
1 #import "HomeViewController.h"
2 @interface HomeViewController ()
3 @end
4 @implementation HomeViewController
5 @synthesize contactTitles;
6 @synthesize groups;
7 - (void)viewDidLoad
8 {
9
10 NSString *path = [[NSBundle mainBundle] pathForResource:@"contacts" ofType:@"plist"];//plist文件路径
11 NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
12 self.contactTitles = dict;
13 [dict release];
14
15 NSArray *array = [[contactTitles allKeys] sortedArrayUsingSelector:@selector(compare:)];
16
17 self.groups = array;
18 [super viewDidLoad];
19 }
20 //使用UITableViewDataSource协议的tableView:cellForRowAtIndexPath:方法
21 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
22
23 static NSString *CellIndentifier = @"Contact";
24
25 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIndentifier];
26
27 if (cell == nil) {
28 cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIndentifier] autorelease];
29
30 }
31
32
33 NSString *group = [groups objectAtIndex:[indexPath section]];
34 NSArray * contactSection = [contactTitles objectForKey:group];
35 cell.textLabel.text = [contactSection objectAtIndex:[indexPath row]];
36
37
38 //单元格添加图片
39 UIImage *image = [UIImage imageNamed:@"avatar.png"];
40 cell.imageView.image = image;
41
42
43 return cell;
44 }
45 - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{
46 return [groups count];
47 }
48 //使用UITableViewDataSource协议的tableView:numberOfRowsInSection:方法
49 //该方法用来设置Table View中要显示数据的行数
50 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
51
52 NSString *group = [groups objectAtIndex:section];
53 NSArray *contactSection = [contactTitles objectForKey:group];
54
55 return [contactSection count];
56 }
57 //添加标题和脚本信息
58 - (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
59 NSString *group = [groups objectAtIndex:section];
60 return group;
61
62 }
63 - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
64 return @"作者:what if";
65 }
66
67
68 /*//UITableViewDelegate协议的方法,选择表格中的项目
69 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
70 NSString *contactSelected = [listOfContacts objectAtIndex:[indexPath row]];
71 NSString *msg = [[NSString alloc] initWithFormat:@"您选择的联系人:%@", contactSelected];
72 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"选择联系人" message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
73 [alert show];
74 [alert release];
75 [contactSelected release];
76 [msg release];
77 } */
78 /*
79 //UITableViewDelegate协议的方法,表格中的缩进
80 - (NSInteger) tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath{
81 return [indexPath row] % 9;
82
83 }*/
84 //索引功能
85
86 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
87 return groups;
88 }
89 //用户点击标志后触发的事件,只有DetailDisclosure Button才有该事件
90 - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
91 //进入到该项目的详细信息页面
92 }
分享到:
相关推荐
### 联系人分组列表 #### 核心概念解析 1. **UITableView**:在iOS开发中,UITableView是用于展示列表数据的重要UI组件。它支持多种样式,包括简单的列表、分组列表等。本例中使用的正是分组样式(`...
在Android开发中,实现类似QQ联系人分组的交互效果是一项常见的需求,它能提供用户友好的体验。这个源码项目“Android 仿QQ联系人分组滑动到顶部固定住直到下一个分组到达顶端”正是针对这一功能的实现。在本文中,...
首先,"从a-z"的排序方式是一种常见的联系人分组方法,它基于联系人的姓氏或名字首字母进行排列。这种分组方式易于理解和操作,用户可以通过快速扫视字母表来找到目标联系人。在实现过程中,开发者通常会利用数据...
3. 分组管理:实现对联系人分组的创建、修改和删除功能。 4. 列表展示:使用ListView或RecyclerView展示联系人列表,每个条目可能包含姓名、电话、电子邮件等信息。 5. 搜索和过滤:添加搜索框,实时过滤和更新列表...
在Android开发中,创建一个类似微信联系人分组列表的应用是一项常见的需求。这个功能的核心在于使用ListView组件来展示数据,并通过巧妙的布局设计实现分组显示的效果。ListView是Android SDK中一个非常重要的视图...
在Android开发中,实现“仿联系人分组滑动特效”是一种常见的需求,尤其是在构建类似通讯录的应用时。这种特效通常涉及到对数据的分组、列表视图的自定义以及触摸滑动事件的处理。核心组件是`PinnedHeaderListView`...
为了实现分组功能,应用还需要一个额外的数据结构来存储联系人分组信息,比如群组名和包含的联系人ID列表。 2. **用户界面**:良好的用户体验是关键。ContactsManager可能具有清晰的界面布局,允许用户轻松添加、...
2. **联系人分组**: - 要创建分组,首先在“文件”菜单下选择“新建”然后点击“文件夹”,在弹出的设置页面填入分组名称,如“IT部”或“经理级别”,并将位置设为“联系人”。 - 新建的文件夹会在联系人列表中...
在Android开发中,构建一个类似QQ首页的分组和联系人展示功能是一项常见的需求,它涉及到数据结构的设计、UI布局的构建以及数据的加载与显示等多个方面。本项目"ContactProject"提供了一个小实例,帮助开发者理解...
- **清理联系人分组**:删除分组后,可能需要检查并清理那些失去分组归属的联系人,确保通讯录数据的整洁。 5. **更新分组数据** - **修改分组信息**:要更新已存在的分组,可以使用`ContentResolver.update()`...
iOS系统提供了Contacts框架,它是苹果官方提供的API,用于访问和操作设备上的联系人和联系人分组。通过这个框架,开发者可以创建、读取、更新和删除联系人,以及创建、删除和管理联系人分组。 1. **Contacts框架**...
总的来说,实现“Android-仿微信通讯录的实现联系人按字母分组显示右侧添加快速索引条”涉及到Android界面设计、数据结构、排序算法以及事件监听等多个知识点,是一个综合性的开发任务。通过这样的实践,开发者可以...
在Android开发中,创建一个类似微信联系人分组列表的应用是一项常见的需求,它涉及到数据的组织、UI组件的使用以及事件处理等多个方面。本示例将重点讲解如何使用ExpandableListView来实现这样的功能。 首先,我们...
1. **联系人分组**:联系人分组是将多个联系人依据共同特征(如家庭成员、同事、朋友等)进行分类,方便用户快速查找和管理。在通信录中,通过分组可以降低信息查找的复杂度,提高工作效率。 2. **分组方法**:分组...
这个功能可以让用户更加高效地管理和查找相关信息,类似于QQ软件中将联系人分组以便于分类和沟通。 首先,我们需要理解QQ分组的基本概念。在QQ中,用户可以创建多个分组,每个分组内包含若干个联系人,这样用户就能...
1. **自定义分组功能**:用户可以根据需求创建个性化的联系人分组,如家庭、工作、朋友等。这一功能通过数据库设计实现,每个联系人可以隶属于一个或多个分组,分组之间可能存在层次结构。在C#中,可以使用Entity ...
Android还支持联系人分组管理,用户可以将联系人分到不同的组中。开发者可以通过`ContactsContract.Groups`和`ContactsContract.GroupsColumns`来操作这些分组。 8. **同步适配器**: 对于跨设备同步联系人,...
5. **联系人分组**:用户可能希望将联系人分组,例如家庭、工作等。实现此功能需要支持创建、编辑和删除联系人分组,并能将联系人分配到不同的分组。 6. **同步与备份**:为防止数据丢失,应用应提供同步和备份功能...
在Android 11系统中,有一个特定的联系人分组问题,涉及到那些以特殊符号开头的联系人条目。在默认情况下,这些特殊符号的联系人会在“...”分组下显示,但根据描述,我们需要将它们调整到“#”分组下。这涉及到对...
本项目“Android联系人管理”旨在提供一个基本的实现,涵盖新建、编辑、删除联系人以及对联系人分组的操作。下面将详细阐述这个项目中的核心知识点。 1. **联系人ContentProvider**: Android中的联系人数据存储在...