- 浏览: 142219 次
- 性别:
- 来自: 北京
文章分类
最新评论
ContactViewController.h 头文件
ContactViewController.m 文件
#import <UIKit/UIKit.h> //基库,一系列的Class(类)来建立和管理iPhone OS应用程序的用户界面接口、应用程序对象、事件控制、绘图模型、窗口、视图和用于控制触摸屏等的接口 #import <AddressBook/AddressBook.h> //地址薄框架提供联系人数据库,通讯数据库等 #import <AddressBookUI/AddressBookUI.h> //地址薄UI框架提供编辑,选择,创建通讯数据库 #import "IIAddressBook.h" //提供解析通讯录数据的一系列方法 @interface ContactViewController : UIViewController<ABPeoplePickerNavigationControllerDelegate, ABNewPersonViewControllerDelegate, ABPersonViewControllerDelegate, ABUnknownPersonViewControllerDelegate> /** 委托接口主要功能 ABPeoplePickerNavigationController:显示整个通讯录并可以选择一个联系人的信息 ABPersonViewController:显示一个具体联系人的信息 ABNewPersonViewController:增加一个新的联系人 ABUnknownPersonViewController:完善一个联系人的信息 **/ @property (nonatomic, strong) IBOutlet UILabel *label; /* 多线程,strong<>IBOutlet引用计数加2,IBOutlet<>IB控件关联 监听中间区域 lable文本 */ /** IBAction<>IB控件动作相关联 **/ - (IBAction)showPeoplePickerController; //监听查看按钮 - (IBAction)showNewPersonViewController;//监听新增按钮 - (IBAction)showPersonViewController; //监听编辑按钮 - (IBAction)showUnknownPersonViewController;//监听未知按钮 @end
ContactViewController.m 文件
#import "ContactViewController.h" @implementation ContactViewController //合成器 @synthesize label; /** 手动初始化ViewController nibNameOrNil 直需要文件名,无需扩展即contact(.nib不需要) **/ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; //初始化父类ViewController if (self) { // Custom initialization } return self; //跳出 } /** 当内存不足时,释放不需要的内存,缓存,未显示的view等 **/ - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } #pragma mark - View lifecycle /* // Implement loadView to create a view hierarchy programmatically, without using a nib. - (void)loadView { } */ // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. /** 视图加载时调用 **/ - (void)viewDidLoad { // 增加Code按钮,可跳转至教学页面 //初始化一个新的按钮,使用指定的标题,样式,目标(自己还是其他view视图),出口方法。 UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"Code" style:UIBarButtonItemStyleBordered target:self action:@selector(code)]; //设置按钮到右侧 self.navigationItem.rightBarButtonItem = item; //初始化 [super viewDidLoad]; } /** 当内存不足时,最大程度释放内存 **/ - (void)viewDidUnload { self.label = nil; //重置lable [super viewDidUnload]; //释放内存 // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } /** 是否支持iphone 旋转 **/ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations //系统默认不支持旋转功能 return (interfaceOrientation == UIInterfaceOrientationPortrait); } #pragma mark - #pragma mark Show all contacts // Called when users tap "Display Picker" in the application. Displays a list of contacts and allows users to select a contact from that list. // The application only shows the phone, email, and birthdate information of the selected contact. /** 查看联系人数据 1、先初始化系统通讯控件 2、设置需要显示的信息,手机等 3、用presentModalViewController 呈现 **/ -(void)showPeoplePickerController { // 查看联系人 系统的通讯录控件 ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; picker.peoplePickerDelegate = self; //委托给自己 // Display only a person's phone, email, and birthdate /** 消息设置版 [picker setDisplayedProperties:[NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty], [NSNumber numberWithInt:kABPersonEmailProperty], [NSNumber numberWithInt:kABPersonBirthdayProperty], nil]]; //属性版 picker.displayedProperties = NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty], [NSNumber numberWithInt:kABPersonEmailProperty], [NSNumber numberWithInt:kABPersonBirthdayProperty], nil]; */ //将手机,邮箱,生日数据压入数组 NSArray *displayedItems = [NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty], [NSNumber numberWithInt:kABPersonEmailProperty], [NSNumber numberWithInt:kABPersonBirthdayProperty], nil]; //设置需要显示的数据 picker.displayedProperties = displayedItems; // Show the picker //显示数据 使用 presentModalViewController可创建模式对话框,可用于视图之间的切换 [self presentModalViewController:picker animated:YES]; } #pragma mark Display and edit a person // Called when users tap "Display and Edit Contact" in the application. Searches for a contact named "Appleseed" in // in the address book. Displays and allows editing of all information associated with that contact if // the search is successful. Shows an alert, otherwise. /** 编辑地址薄数据 1、ABAddressBookCreate 得到地址薄 2、查找是否有张三数据 3、如果没有提示用户,有则进入编辑视图 **/ -(void)showPersonViewController { // 得到地址薄 iphone6.0不推荐使用 ABAddressBookRef addressBook = ABAddressBookCreate(); // 寻找名为“CC”的联系人 NSArray *people = (__bridge NSArray *)ABAddressBookCopyPeopleWithName(addressBook, CFSTR("zhangsan")); // Display "Appleseed" information if found in the address book //如果有数据 if ((people != nil) && [people count]) { //ABRecordRef 一个指向Core Foundation对象的通用指针 ABRecordRef person = (__bridge ABRecordRef)[people objectAtIndex:0]; ABPersonViewController *picker = [[ABPersonViewController alloc] init]; //初始化 picker.personViewDelegate = self; picker.displayedPerson = person; //精简版 picker.displayedPerson = (__bridge ABRecordRef)[people objectAtIndex:0]; // Allow users to edit the person’s information picker.allowsEditing = YES; //更新联系人数据到编辑视图 [self.navigationController pushViewController:picker animated:YES]; } else //没有数据则给一些提示信息 { // Show an alert if "Appleseed" is not in Contacts //UIAlertView常用于应用界面信息警告提示 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Could not find 张三 in the Contacts application" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil]; [alert show]; //弹出提示 } CFRelease(addressBook); //释放 } #pragma mark Create a new person // Called when users tap "Create New Contact" in the application. Allows users to create a new contact. -(void)showNewPersonViewController { // 新增联系人 ABNewPersonViewController *picker = [[ABNewPersonViewController alloc] init]; picker.newPersonViewDelegate = self; UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:picker]; [self presentModalViewController:navigation animated:YES]; } #pragma mark Add data to an existing person // Called when users tap "Edit Unknown Contact" in the application. -(void)showUnknownPersonViewController { ABRecordRef aContact = ABPersonCreate(); CFErrorRef anError = NULL; ABMultiValueRef email = ABMultiValueCreateMutable(kABMultiStringPropertyType); bool didAdd = ABMultiValueAddValueAndLabel(email, @"John-Appleseed@mac.com", kABOtherLabel, NULL); if (didAdd == YES) { ABRecordSetValue(aContact, kABPersonEmailProperty, email, &anError); if (anError == NULL) { ABUnknownPersonViewController *picker = [[ABUnknownPersonViewController alloc] init]; picker.unknownPersonViewDelegate = self; picker.displayedPerson = aContact; picker.allowsAddingToAddressBook = YES; picker.allowsActions = YES; picker.alternateName = @"John Appleseed"; picker.title = @"John Appleseed"; picker.message = @"Company, Inc"; [self.navigationController pushViewController:picker animated:YES]; } else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Could not create unknown user" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil]; [alert show]; } } CFRelease(email); CFRelease(aContact); } #pragma mark ABPeoplePickerNavigationControllerDelegate methods // Displays the information of a selected person - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person { self.label.text = [IIAddressBook getFullName:person]; //[self dismissModalViewControllerAnimated:YES]; //return NO; return YES; } // Does not allow users to perform default actions such as dialing a phone number, when they select a person property. - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier { return NO; } // Dismisses the people picker and shows the application when users tap Cancel. - (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker; { [self dismissModalViewControllerAnimated:YES]; } #pragma mark ABPersonViewControllerDelegate methods // Does not allow users to perform default actions such as dialing a phone number, when they select a contact property. - (BOOL)personViewController:(ABPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifierForValue { return NO; } #pragma mark ABNewPersonViewControllerDelegate methods // Dismisses the new-person view controller. - (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person { [self dismissModalViewControllerAnimated:YES]; } #pragma mark ABUnknownPersonViewControllerDelegate methods // Dismisses the picker when users are done creating a contact or adding the displayed person properties to an existing contact. - (void)unknownPersonViewController:(ABUnknownPersonViewController *)unknownPersonView didResolveToPerson:(ABRecordRef)person { [self dismissModalViewControllerAnimated:YES]; } // Does not allow users to perform default actions such as emailing a contact, when they select a contact property. - (BOOL)unknownPersonViewController:(ABUnknownPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier { return NO; } // 跳转至教学页面 - (void)code { CodeViewController *controller = [[CodeViewController alloc] initWithNibName:@"CodeViewController" bundle:nil]; NSString *name = [NSString stringWithUTF8String:object_getClassName(self)]; controller.className = name; [self.navigationController pushViewController:controller animated:YES]; } @end
发表评论
-
Foundation和UIKit框架组织图
2013-01-28 08:58 6205... -
[转]linux常用命令
2013-01-26 22:33 900本文来自于http://blog.csdn.net/totog ... -
[转] NSString 控件消息
2013-01-19 15:52 1064【转】http://www.tongwenguan.com/o ... -
关闭arc
2013-01-17 22:35 04.2前的xcode中,打开“Build Setting”,找 ... -
iOS main函数 机器码
2013-01-17 07:24 2501main 启动对应机器码分析 0x2730: pushl ... -
歌曲源码剪切分析
2013-01-16 17:19 7584mian.m 以及appdelegate就不说了,主要说说C控 ... -
[转]深入理解Objective-c中@class的含义
2013-01-16 07:16 1042[转]http://blog.prosight.me/i ... -
UIImageView【转】
2013-01-16 07:17 5471【转】http://my.oschina.net/plumso ... -
isKindOfClass<> isMemberOfClass[转]
2013-01-15 10:27 0转http://blog.csdn.net/totogo201 ... -
NSString 截取,文件读取【转】
2013-01-16 07:18 1532【转】http://www.cnblogs.com/csj00 ... -
loadNibNamed
2013-01-15 10:05 0动态加载,就是在程序运行当中,根据需要动态地加载一些视图,常常 ... -
respondsToSelector
2013-01-15 09:31 2521respondsToSelector该方法询问对象以确定其是否 ... -
initWithFrame<>initWithCoder
2013-01-15 09:19 1774initWithFrame 和 initWithCode ... -
协议protocol
2013-01-16 07:17 1094自定义协议语法如下: @protocol 协议名称 方法之声明 ... -
addSubview<>insertSubView
2013-01-15 08:35 3564addSubview是一层一层往上加,新加的只能放到父视图的最 ... -
UIViewController生命周期[转]
2013-01-15 00:09 975转http://www.cnblogs.com/smileEv ... -
IBOutlet IBaction 详解
2013-01-14 23:33 4378IBOutlet对于编译器而言只是一个标记,也就是 ... -
AppDelegate.m 介绍
2013-01-14 22:59 6623【转】[url] www.cnblogs.com/xunzi ... -
didReceiveMemoryWarning
2013-01-14 21:52 5598[转]http://blog.csdn.net/yy404 ... -
OC-plist xib pch StoryBoard
2013-01-14 21:12 1236plist plist文件是什么呢? 它全名是: ...
相关推荐
通过分析这个电话薄源代码,开发者不仅可以学习到如何创建一个基本的电话簿应用,还能深入理解数据结构、文件操作、用户交互设计和错误处理等核心编程概念。此外,对于想要提高编程技能或从事类似项目的人来说,这是...
因此,理解这个源码不仅能帮助我们获取Outlook和Outlook Express的通讯薄,还可能为我们提供一种通用的方法来处理其他类似任务,例如与其他邮件客户端或地址簿服务的交互。 总之,获取本机通讯薄的内容涉及对...
【封包截取源码】是一种在编程领域中用于网络数据监测和分析的技术,主要应用于网络通信协议的解析、网络安全检测、游戏外挂开发等多个场景。易语言是一种以中文为编程语句的程序设计系统,它提供了简单易懂的编程...
CF卡(CompactFlash)是一种早期广泛使用的存储介质,主要用于数码相机、个人数字助理(PDA)、笔记本电脑等设备。...通过阅读和分析源码,可以进一步学习嵌入式系统、驱动开发以及存储技术的相关知识。
源码的分析和学习对于进阶的易语言程序员来说是非常有价值的。通过阅读和理解源代码,可以深入理解如何使用易语言进行文件读写、数据解析和转换等操作。具体来说,开发者可能使用了易语言的字符串处理命令来解析VCF...
起止地址 数据内容 数据含义 数据类型 00 - 03 F4 9B 13 FC 文件标志 int 04 - 07 00 06 00 00 未知 int 08 - 0B 00 00 00 00 保留 int 0C - 0F 97 04 00 00 证券总数 int 10 - 13 00 18 00 00 未知 int需添加之起始...
本文在分析中国办公自动化现状和存在问题基础上,分析了中国办公自动化的特点和要求,并根据南开创元信息技术有限公司的实际情况,开发了一个颇具特色的办公自动化系统——极光,它代表快速,高效与界面美观并存。...
在压缩包中的“adsl”文件可能是程序源代码、配置文件或相关资源,进一步分析这些文件可以帮助理解软件的具体实现。这个自开发的C#宽带拨号软件不仅是一个实用工具,也是学习C#网络编程和系统集成的好实例。通过研究...
一、个人中心:通讯录备忘录电话薄主要用于添加联系人信息,相当于通讯录功能,可以存贮相关联系人的基本信息,姓名、联系方式、地址、邮箱等。工作日志主要用于记录个人工作生活中大小事情的备忘,相当于备忘录功能...
包含资源名称下载地址 Android 开发从入门到精通 新版Android开发教程及笔记-完整版 《Android中文教程》中文版 《android基础教程合集》 Android实例教程 会员贡献索引贴 实用Android开发工具和资源精选 APK权限...
通过分析和理解这些代码,开发者可以了解如何使用Java来构建一个微博客户端应用,这涵盖了网络请求、数据解析、用户界面设计等多个方面的知识。 【标签】"crazyitweibo sina 新浪微博"进一步确认了项目的主要功能和...
350可逆式冷轧机是一种广泛应用在金属加工领域的设备,主要用于对金属板材进行连续或间歇的冷态压延,以达到减薄、强化材料的目的。其特点是能够双向操作,即正向和反向轧制,以满足不同生产工艺的需求。PLC在此系统...
尤其在电话簿存储方面,USIM卡可以存储大量的电话号码,每个号码可关联多个别名、其他电话号码和电子邮件地址。 3. **需求背景**: - 随着iPhone等智能手机的流行,Android系统成为主流操作系统之一。然而,早期的...
【简易电话簿设计】是一个基于计算机程序的电话薄管理系统,旨在帮助用户管理和组织联系人的电话号码。这个系统采用结构体、数组以及文件等编程概念来实现。以下是该系统的详细知识点: 1. **需求分析**: - 系统...
功能强大的报表统计使得用户大数据分析变的简单,更加容易的制定销售战略。集成的短信发送 使得用户随时随地的为公司客户发送短信。简单易用的操作界面使得用户快速上手。 二、主要功能 一、个人中心:通讯录...
功能强大的报表统计使得用户大数据分析变的简单,更加容易的制定销售战略。集成的短信发送 使得用户随时随地的为公司客户发送短信。简单易用的操作界面使得用户快速上手。 云点滴客户关系管理CRM功能介绍; 一、...
功能强大的报表统计使得用户大数据分析变的简单,更加容易的制定销售战略。集成的短信发送 使得用户随时随地的为公司客户发送短信。简单易用的操作界面使得用户快速上手。 功能介绍; 一、个人中心:通讯录备忘...
功能强大的报表统计使得用户大数据分析变的简单,更加容易的制定销售战略。集成的短信发送 使得用户随时随地的为公司客户发送短信。简单易用的操作界面使得用户快速上手。 二、主要功能 一、个人中心:通讯录备忘录...
功能强大的报表统计使得用户大数据分析变的简单,更加容易的制定销售战略。集成的短信发送 使得用户随时随地的为公司客户发送短信。简单易用的操作界面使得用户快速上手。 功能介绍; 一、个人中心:通讯录备忘录 ...