您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > iPhone开发基础知识
一.基本知识和UINavigationController类似,UITabBarController也可以用来控制多个页面导航,用户可以在多个视图控制器之间移动,并可以定制屏幕底部的选项卡栏。借助屏幕底部的选项卡栏,UITabBarController不必像UINavigationController那样以栈的方式推入和推出视图,而是组建一系列的控制器(他们各自可以是UIViewController,UINavigationController,UITableViewController或任何其他种类的视图控制器),并将它们添加到选项卡栏,使每个选项卡对应一个视图控制器。二.具体介绍1.通过代码的方式创建UITabBarController界面代码的位置应该放在xxxAppDelegate.m中的applicationDidFinishLaunching:方法中,因为TabBarController通常是为应用窗口提供根视图,所以需要在程序启动后,窗口显示前创建TabBarController。具体创建步骤为:(1)创建一个新的UITabBarController对象(2)为每一个Tab创建一个rootviewcontroller(3)把这些rootviewcontrollers添加到一个array中,再把这个array分配给tabbarcontroller的viewControllers属性(4)把tabbarcontroller'sview添加到应用程序主窗口例子:-(void)applicationDidFinishLaunching:(UIApplication*)application{tabBarController=[[UITabBarControlleralloc]init];MyViewController*vc1=[[MyViewControlleralloc]init];MyOtherViewController*vc2=[[MyOtherViewControlleralloc]init];NSArray*controllers=[NSArrayarrayWithObjects:vc1,vc2,nil];tabBarController.viewControllers=controllers;//Addthetabbarcontroller'scurrentviewasasubviewofthewindow[windowaddSubview:tabBarController.view];}2.通过代码的方式创建TabBarItemTabBarController的每个选项卡都得有一个UITabBarItem,可以在其rootviewcontroller初始化时创建并添加UITabBarItem。例子:-(id)init{if(self=[superinitWithNibName:@MyViewControllerbundle:nil]){self.title=@MyViewController;UIImage*anImage=[UIImageimageNamed:@MyViewControllerImage.png];UITabBarItem*theItem=[[UITabBarItemalloc]initWithTitle:@Homeimage:anImagetag:0];self.tabBarItem=theItem;[theItemrelease];}returnself;}..UITabBarController学习笔记一.基本知识和通讯录中联系人相关的应用iPhone提供了两个框架:AddressBook.framework和AddressBookUI.framework,使用这两个框架我们可以在程序中访问并显示iPhone数据库中的联系人信息。二.具体介绍1.AddressBookUI显示部分AddressBookUI中提供了和联系人显示信息相关的一些Controller,有四个:ABPeoplePickerNavigationController:显示整个通讯录并可以选择一个联系人的信息ABPersonViewController:显示一个具体联系人的信息ABNewPersonViewController:增加一个新的联系人ABUnknownPersonViewController:完善一个联系人的信息由于其中最主要的是ABPeoplePickerNavigationController,因此就具体的介绍一下通过程序显示整个通讯录并且可以选择其中某个联系人信息的步骤。(a)创建并初始化一个ABPeoplePickerNavigationController对象(b)设置其代理(delegate)(c)用presentModalViewController:animated:这个方法进行显示整个通讯录页面例子:-(IBAction)showPicker:(id)sender{ABPeoplePickerNavigationController*picker=[[ABPeoplePickerNavigationControlleralloc]init];picker.peoplePickerDelegate=self;[selfpresentModalViewController:pickeranimated:YES];[pickerrelease];}ABPeoplePickerNavigationControllerDelegate的方法介绍(a)peoplePickerNavigationControllerDidCancel:当用户选择取消时调用这个方法,可以在这个方法里取消整个通讯录页面的显示。(b)peoplePickerNavigationController:shouldContinueAfterSelectingPerson:当用户选择了通讯录中某一个联系人时调用这个方法,可以在这里获取联系人的信息。如果希望可以继续显示这个联系人更具体的信息,则returnYES。否则取消整个通讯录页面的显示并returnNO。(c)peoplePickerNavigationController:shouldContinueAfterSelectingPerson:property:identifier:如果上一个方法返回的是YES,则会显示某一个联系人信息,如果选择了联系人的某一项纪录,就会调用这个方法,可以通过点击选择联系人的某一项信息。如果希望可以对选择的某一项纪录进行进一步操作,比如直接拨打电话或调用邮箱发送邮件,则returnYES。否则取消整个通讯录页面的显示并returnNO。例子:-(void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController*)peoplePicker{//assigningcontrolbacktothemaincontroller[pickerdismissModalViewControllerAnimated:YES];}-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePickershouldContinueAfterSelectingPerson:(ABRecordRef)person{//获取联系人姓名name.text=(NSString*)ABRecordCopyCompositeName(person);//获取联系人电话ABMutableMultiValueRefphoneMulti=ABRecordCopyValue(person,kABPersonPhoneProperty);NSMutableArray*phones=[[NSMutableArrayalloc]init];inti;for(i=0;iABMultiValueGetCount(phoneMulti);i++){NSString*aPhone=[(NSString*)ABMultiValueCopyValueAtIndex(phoneMulti,i)autorelease];NSString*aLabel=[(NSString*)ABMultiValueCopyLabelAtIndex(phoneMulti,i)autorelease];NSLog(@PhoneLabel:%@Phone#:%@,aLabel,aPhone);if([aLabelisEqualToString:@_$!Mobile!$_]){[phonesaddObject:aPhone];}}phoneNo.text=@;if([phonescount]0){NSString*mobileNo=[phonesobjectAtIndex:0];phoneNo.text=mobileNo;//NSLog(mobileNo);}//获取联系人邮箱ABMutableMultiValueRefemailMulti=ABRecordCopyValue(person,kABPersonEmailProperty);NSMutableArray*emails=[[NSMutableArrayalloc]init];for(i=0;iABMultiValueGetCount(emailMulti);i++){NSString*emailAdress=[(NSString*)ABMultiValueCopyValueAtIndex(emailMulti,i)autorelease];[emailsaddObject:emailAdress];}email.text=@;if([emailscount]0){NSString*emailFirst=[emailsobjectAtIndex:0];email.text=emailFirst;//NSLog(emailFirst);}[peoplePickerdismissModalViewControllerAnimated:YES];returnNO;}-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePickershouldContinueAfterSelectingPerson:(ABRecordRef)personproperty:(ABPropertyID)propertyidentifier:(ABMultiValueIdentifier)identifier{returnNO;}2.AddressBook部分AddressBook框架部分主要是记录联系人的各个信息,ABRecordRef类型的记录既可以代表单个人(kABPersonType),也可以是一个集合(kABGroupType)。通讯录中联系人的各个属性有两种形式,单值属性和多值属性。单值属性对应的只有一个值,比如联系人的姓名;多值属性对应的可能有多个值,比如联系人有多个电话号码等。(a)常用方法CFTypeRefABRecordCopyValue(ABRecordRefrecord,ABPropertyIDproperty);从一个记录中获取某个属性对应的值(b)单值属性对应的方法CFStringRefABRecordCopyCompositeName(ABRecordRefrecord);获取联系人完整的姓名。(c)多值属性对应的方法CFTypeRefABMultiValueCopyValueAtIndex(ABMultiValueRefmultiValue,CFIndexindex);返回对应位置处的属性值CFStringRefABMu
本文标题:iPhone开发基础知识
链接地址:https://www.777doc.com/doc-2877595 .html