iOS 类似iPhone通讯录TableView完整实例【源码】

iOS 类似iPhone通讯录TableView完整实例,初学objective-c,自己写的一个demo,有不足之处请指正:

效果图:

iOS 类似iPhone通讯录TableView完整实例【源码】

核心代码:

- (void)viewDidLoad   {       [super viewDidLoad];              NSArray *array = [[NSArray alloc] initWithObjects:@"你好", @"BFlower",                         @"CGrass", @"DFence", @"EHouse", @"FTable", @"GChair",                         @"HBook", @"ISwing" ,@"JWang" ,@"KDong" ,@"LNi" ,@"MHao" ,@"Na" ,@"Oa" ,@"Pa" ,@"Qa" ,@"Ra" ,@"Sa" ,@"Ta" ,@"Ua" ,@"Va" ,@"Wa" ,@"Xa" ,@"Ya" ,@"Za", nil];       self.listarray = array;       NSLog(@"listarryCount:%d",[listarray count]);       secLabelArray = [[NSArray alloc] initWithObjects:@"A", @"B", @"C",@"D", @"E", @"F",@"G", @"H", @"I",@"J", @"K", @"L",@"M", @"N", @"O",@"P", @"Q", @"R",@"S", @"T", @"U",@"V", @"W", @"X",@"Y", @"Z", nil];              NSArray *arrayA = [[NSArray alloc] initWithObjects:@"测试A1",@"测试A2", nil];       NSArray *arrayB = [[NSArray alloc] initWithObjects:@"测试B1",@"测试B2",@"测试B3", nil];       NSArray *arrayC = [[NSArray alloc] initWithObjects:@"测试C1",@"测试C2",@"测试C3",@"测试C4", nil];       NSArray *arrayD = [[NSArray alloc] initWithObjects:@"测试D1",@"测试D2",@"测试D3",@"测试D4",@"测试D5", nil];       NSArray *arrayE = [[NSArray alloc] initWithObjects:@"测试E1",@"测试E2",@"测试E3",@"测试E4",@"测试E5",@"测试E6", nil];       NSArray *arrayF = [[NSArray alloc] initWithObjects:@"测试F1",@"测试F2",@"测试F3",@"测试F4",@"测试F5",@"测试F6",@"测试F7", nil];       NSArray *arrayG = [[NSArray alloc] initWithObjects:@"测试G1",@"测试G2",@"测试G3",@"测试G4",@"测试G5",@"测试G6", nil];       arrayDictKey = [[NSArray alloc] initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G", nil];       arrayDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:arrayA,[arrayDictKey objectAtIndex:0],                                                                       arrayB,[arrayDictKey objectAtIndex:1],                                                                       arrayC,[arrayDictKey objectAtIndex:2],                                                                       arrayD,[arrayDictKey objectAtIndex:3],                                                                       arrayE,[arrayDictKey objectAtIndex:4],                                                                       arrayF,[arrayDictKey objectAtIndex:5],                                                                       arrayG,[arrayDictKey objectAtIndex:6],                                                                               nil];       NSLog(@"arrayrow:%d",[[arrayDict objectForKey:[arrayDictKey objectAtIndex:1]] count]);               tableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 460)];       [tableView setDelegate:self];       [tableView setDataSource:self];       [self.view addSubview:tableView];       [tableView release];                 // Do any additional setup after loading the view.   }      - (NSInteger)numberOfSectionsInTableView:(UITableView *)aTableView    {        //* 出现几组       //if(aTableView == self.tableView) return 27;       return [arrayDict count];    }      //*字母排序搜索   - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView   {       //* 字母索引列表       /*NSMutableArray *toBeReturned = [[NSMutableArray alloc]init];              for(char c= 'A';c<='Z';c++)                      [toBeReturned addObject:[NSString stringWithFormat:@"%c",c]];*/              return arrayDictKey;              /*NSMutableArray *newarr=[[NSMutableArray alloc]initWithArray:listarray];       [newarr addObject:@"{search}"]; //等价于[arr addObject:UITableViewIndexSearch];       return newarr;*/          }      - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index   {         //搜索时显示按索引第几组        NSInteger count = 0;       NSLog(@"%@",title);       for(NSString *character in arrayDictKey)       {                      if([character isEqualToString:title])           {                              return count;                      }                      count ++;                  }              return count;          }      - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section   {              /*if([listarray count]==0)                  {                      return @"";                  }*/                      //return [listarray objectAtIndex:section];   //*分组标签       return [arrayDictKey objectAtIndex:section];          }      - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {        //return [self.listarray count];    //*每组要显示的行数       //NSInteger i = [[listarray objectAtIndex:section] ]      NSInteger i =  [[arrayDict objectForKey:[arrayDictKey objectAtIndex:section]] count];       return i;   }      -(UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath{          //返回类型选择按钮            return UITableViewCellAccessoryDisclosureIndicator;   //每行右边的图标   }     - (UITableViewCell *)tableView:(UITableView *)tableview             cellForRowAtIndexPath:(NSIndexPath *)indexPath {               static NSString *TableSampleIdentifier = @"TableSampleIdentifier";               UITableViewCell *cell = [tableview dequeueReusableCellWithIdentifier:                                 TableSampleIdentifier];        if (cell == nil) {            cell = [[UITableViewCell alloc]                    initWithStyle:UITableViewCellStyleDefault                    reuseIdentifier:TableSampleIdentifier];       }               NSUInteger row = [indexPath row];       NSUInteger sectionMy = [indexPath section];       NSLog(@"sectionMy:%d",sectionMy);          cell.textLabel.text = [[arrayDict objectForKey:[arrayDictKey objectAtIndex:sectionMy]] objectAtIndex:row]; //每一行显示的文字              NSString *str=  [NSString stringWithFormat: @"%d", row];           UIImage *image = [UIImage imageNamed:str];        cell.imageView.image = image;        UIImage *highLighedImage = [UIImage imageNamed:@"1.png"];               cell.imageView.highlightedImage = highLighedImage; //选中一行时头部图片的改变       return cell;    }   //划动cell是否出现del按钮   - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {                     return YES;  //是否需要删除图标   }   //编辑状态(不知道干什么用)   - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle    forRowAtIndexPath:(NSIndexPath *)indexPath   {              [self viewDidLoad];   }      //选中时执行的操作   - (NSIndexPath *)tableView:(UITableView *)tableView      willSelectRowAtIndexPath:(NSIndexPath *)indexPath {        NSUInteger row = [indexPath row];       if (row%2 == 0) {           NSUInteger row = [indexPath row];            NSString *rowValue = [listarray objectAtIndex:row];                       NSString *message = [[NSString alloc] initWithFormat:                                 @"You selected %@", rowValue];            UIAlertView *alert = [[UIAlertView alloc]                                  initWithTitle:@"Row Selected!"                                  message:message                                  delegate:nil                                  cancelButtonTitle:@"Yes I Did"                                  otherButtonTitles:nil];            [alert show];                  }       return indexPath;    }   - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{              //这里控制值的大小       return 50.0;  //控制行高          }  

总结:有些东西没用之前觉得这个会很难,很复杂,做过后才发现,其实关键在于理解,多看多实践这样才能提高。

Demo下载地址:

下载在Linux公社的1号FTP服务器里,下载地址:

FTP地址:ftp://www.linuxidc.com

用户名:

密码:

在 2012年LinuxIDC.com\5月\iOS 类似iPhone通讯录TableView完整实例【源码】

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ppjgy.html