你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發UI篇—使用UItableview完成一個簡單的QQ好友列表(一)

iOS開發UI篇—使用UItableview完成一個簡單的QQ好友列表(一)

編輯:IOS開發綜合
iOS開發UI篇—使用UItableview完成一個簡單的QQ好友列表(一)   一、項目結構和plist文件           二、實現代碼   1.說明:   主控制器直接繼承UITableViewController   復制代碼  //  YYViewController.h //  02-QQ好友列表(基本數據的加載) // //  Created by apple on 14-5-31. //  Copyright (c) 2014年 itcase. All rights reserved. //   #import <UIKit/UIKit.h>   @interface YYViewController : UITableViewController   @end 復制代碼 在storyboard中進行了關聯       2.代碼   數據模型部分:   YYQQGroupModel.h文件   復制代碼  1 //  2 //  YYQQGroupModel.h  3 //  02-QQ好友列表(基本數據的加載)  4 //  5 //  Created by apple on 14-5-31.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import <Foundation/Foundation.h> 10  11 @interface YYQQGroupModel : NSObject 12 /** 13  *  名稱屬性 14  */ 15 @property(nonatomic,copy)NSString *name; 16 /** 17  *  是否在線 18  */ 19 @property(nonatomic,copy)NSString *online; 20 /** 21  *  好友列表 22  */ 23 @property(nonatomic,strong)NSArray *friends; 24  25 -(instancetype)initWithDict:(NSDictionary *)dict; 26 +(instancetype) qqGroupModelWithDict:(NSDictionary *)dict; 27 @end 復制代碼 YYQQGroupModel.m文件   復制代碼  1 //  2 //  YYQQGroupModel.m  3 //  02-QQ好友列表(基本數據的加載)  4 //  5 //  Created by apple on 14-5-31.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import "YYQQGroupModel.h" 10 #import "YYFriendsModel.h" 11  12 @implementation YYQQGroupModel 13 -(instancetype)initWithDict:(NSDictionary *)dict 14 { 15     if (self=[super init]) { 16         //將字典轉換為模型 17         [self setValuesForKeysWithDictionary:dict]; 18          19         //定義一個數組來保存轉換後的模型 20         NSMutableArray *models=[NSMutableArray arrayWithCapacity:self.friends.count]; 21         for (NSDictionary *dict in self.friends) { 22             YYFriendsModel *friends=[YYFriendsModel friendsWithDict:dict]; 23             [models addObject:friends]; 24         } 25         _friends=[models copy]; 26     } 27     return self; 28 } 29  30 +(instancetype)qqGroupModelWithDict:(NSDictionary *)dict 31 { 32     return  [[self alloc]initWithDict:dict]; 33 } 34 @end 復制代碼 YYFriendsModel.h文件   復制代碼  1 //  2 //  YYFriendsModel.h  3 //  02-QQ好友列表(基本數據的加載)  4 //  5 //  Created by apple on 14-5-31.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import <Foundation/Foundation.h> 10  11 @interface YYFriendsModel : NSObject 12 /** 13  *  每個好友的名稱 14  */ 15 @property(nonatomic,copy)NSString *name; 16 /** 17  *每個好友的頭像 18  */ 19 @property(nonatomic,copy)NSString *icon; 20 /** 21  *  每個好友的個性簽名 22  */ 23 @property(nonatomic,copy)NSString *intro; 24 /** 25  *  該好友是否是vip 26  */ 27 @property(nonatomic,assign,getter = isVip)BOOL vip; 28  29 -(instancetype)initWithDict:(NSDictionary *)dict; 30 +(instancetype)friendsWithDict:(NSDictionary *)dict; 31 @end 復制代碼 YYFriendsModel.m文件   復制代碼  1 //  2 //  YYFriendsModel.m  3 //  02-QQ好友列表(基本數據的加載)  4 //  5 //  Created by apple on 14-5-31.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import "YYFriendsModel.h" 10  11 @implementation YYFriendsModel 12 -(instancetype)initWithDict:(NSDictionary *)dict 13 { 14     if (self=[super init]) { 15         [self setValuesForKeysWithDictionary:dict]; 16     } 17     return self; 18 } 19  20 +(instancetype)friendsWithDict:(NSDictionary *)dict 21 { 22     return [[self alloc]initWithDict:dict]; 23 } 24 @end 復制代碼 視圖部分   YYfriendCell.h文件   復制代碼  1 //  2 //  YYfriendCell.h  3 //  02-QQ好友列表(基本數據的加載)  4 //  5 //  Created by apple on 14-5-31.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import <UIKit/UIKit.h> 10 @class YYFriendsModel; 11 @interface YYfriendCell : UITableViewCell 12  13 @property(nonatomic,strong)YYFriendsModel *friends; 14  15 +(instancetype)cellWithTableview:(UITableView *)tableView; 16 @end 復制代碼 YYfriendCell.m文件   復制代碼  1 //  2 //  YYfriendCell.m  3 //  02-QQ好友列表(基本數據的加載)  4 //  5 //  Created by apple on 14-5-31.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import "YYfriendCell.h" 10 #import "YYFriendsModel.h" 11 //私有擴展 12 @interface YYfriendCell() 13  14  15 @end 16 @implementation YYfriendCell 17  18 +(YYfriendCell *)cellWithTableview:(UITableView *)tableView 19 { 20     static NSString *identifier=@"qq"; 21     YYfriendCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier]; 22     if (cell==nil) { 23         //這裡使用系統自帶的樣式 24         cell=[[YYfriendCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier]; 25         NSLog(@"創建一個cell"); 26     } 27     return cell; 28 } 29  30 -(void)setFriends:(YYFriendsModel *)friends 31 { 32     _friends=friends; 33     //1.設置頭像 34     self.imageView.image=[UIImage imageNamed:_friends.icon]; 35        //2.設置昵稱 36     self.textLabel.text=_friends.name; 37      //3.設置簡介 38     self.detailTextLabel.text=_friends.intro; 39  //判斷是否是會員 40     /** 41      *  這裡有個注意點,如果不寫else設置為黑色,會怎麼樣? 42      */ 43     if (_friends.isVip) { 44         [self.textLabel setTextColor:[UIColor redColor]]; 45     }else 46     { 47     [self.textLabel setTextColor:[UIColor blackColor]]; 48     } 49 } 50 @end 復制代碼 主控制器部分   YYViewController.m文件   復制代碼  1 //  2 //  YYViewController.m  3 //  02-QQ好友列表(基本數據的加載)  4 //  5 //  Created by apple on 14-5-31.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import "YYViewController.h" 10 #import "YYQQGroupModel.h" 11 #import "YYfriendCell.h" 12 #import "YYFriendsModel.h" 13  14 @interface YYViewController () 15 /** 16  *  用來保存所有的分組數據 17  */ 18 @property(nonatomic,strong)NSArray *groupFriends; 19 @end 20  21 @implementation YYViewController 22 #pragma mark-懶加載 23 //1.先拿到數據,實現懶加載 24 -(NSArray *)groupFriends 25 { 26     if (_groupFriends==nil) { 27         NSString *fullpath=[[NSBundle mainBundle]pathForResource:@"friends.plist" ofType:nil]; 28         NSArray *arrayM=[NSArray arrayWithContentsOfFile:fullpath]; 29          30         NSMutableArray *models=[NSMutableArray arrayWithCapacity:arrayM.count]; 31         for (NSDictionary *dict in arrayM) { 32             YYQQGroupModel *group=[YYQQGroupModel qqGroupModelWithDict:dict]; 33             [models addObject:group]; 34         } 35         _groupFriends=[models copy]; 36     } 37     return _groupFriends; 38 } 39  40 - (void)viewDidLoad 41 { 42     [super viewDidLoad]; 43      self.tableView.sectionHeaderHeight = 100; 44 } 45  46 #pragma mark-  設置數據源 47 //返回多少組 48 //為什麼這裡不會智能提示?因為這些方法是uitableview協議裡的,默認並沒有遵守協議,讓主控制器類繼承uitableviewcontroller後,就已經遵守了 49 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 50 { 51     return self.groupFriends.count; 52 } 53 //每組返回多少行 54 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 55 { 56     //取出對應的組模型 57     YYQQGroupModel *group=self.groupFriends[section]; 58     //返回對應組中的好友數 59     return group.friends.count; 60 } 61 //每組每行的內容 62 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 63 { 64     //1.創建cell 65     YYfriendCell *cell=[YYfriendCell cellWithTableview:tableView]; 66  67     //2.設置cell 68     YYQQGroupModel *group=self.groupFriends[indexPath.section]; 69     YYFriendsModel *friends=group.friends[indexPath.row]; 70     cell.friends=friends; 71     //3.返回一個cell 72     return cell; 73 } 74  75  76 #pragma mark - 代理方法 77 // 當一個分組標題進入視野的時候就會調用該方法 78 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 79 { 80     //    1.創建頭部視圖 81     UIView *view = [[UIView alloc] init]; 82     view.backgroundColor = [UIColor grayColor]; 83     //    2.返回頭部視圖 84     return view; 85 } 86  87 //設置分組頭部標題的高度 88 -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 89 { 90     return 44; 91 } 92  93 #pragma mark  隱藏狀態欄 94 -(BOOL)prefersStatusBarHidden 95 { 96     return YES; 97 } 98 @end
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved