利用Xib進行實現
應用場景:像團購網站的列表數據顯示,新聞列表顯示等(由於該類的顯示的數據單元格內容格式相同) (1)主控制器文件,在文件中實現了自己自定義的代理,加載數據, 復制代碼 1 #import "SLViewController.h" 2 #import "SLTgDatas.h" 3 #import "SLTableViewCell.h" 4 #import "SLFooterView.h" 5 #import "SLHeaderView.h" 6 7 @interface SLViewController ()<UITableViewDataSource,UITableViewDelegate,SLFooterViewDelegate> 8 9 @property (weak, nonatomic) IBOutlet UITableView *tableview; 10 11 @property (nonatomic,strong) NSMutableArray *arrayM; 12 13 @end 14 15 @implementation SLViewController 16 17 -(void)loadMoreData 18 { 19 NSLog(@"======="); 20 SLTgDatas *da=[[SLTgDatas alloc] init]; 21 da.title=@"西紅柿雞蛋"; 22 da.price=@"12"; 23 da.buyCount=@"56"; 24 da.icon=@"2c97690e72365e38e3e2a95b934b8dd2"; 25 [self.arrayM addObject:da]; 26 [self.tableview reloadData]; 27 28 } 29 30 31 #pragma mark -解析plist數據文件 32 -(NSMutableArray *)arrayM 33 { 34 if (_arrayM==nil) { 35 NSString *fullpath=[[NSBundle mainBundle] pathForResource:@"tgs" ofType:@"plist"]; 36 NSArray *array=[NSArray arrayWithContentsOfFile:fullpath]; 37 NSMutableArray *arr=[NSMutableArray arrayWithCapacity:array.count]; 38 for (NSDictionary *dict in array) { 39 SLTgDatas *data=[SLTgDatas tgDataWithDiectionary:dict]; 40 [arr addObject:data]; 41 } 42 43 _arrayM=arr; 44 } 45 46 return _arrayM; 47 } 48 49 - (void)viewDidLoad 50 { 51 [super viewDidLoad]; 52 // self.tableview.dataSource=self; 53 54 UINib *nib=[UINib nibWithNibName:@"SLFooterView" bundle:nil]; 55 SLFooterView *footerview=[[nib instantiateWithOwner:nil options:nil] firstObject]; 56 self.tableview.tableFooterView=footerview; 57 58 footerview.delegate=self; 59 60 SLHeaderView *headerview=[SLHeaderView headerWithView]; 61 self.tableview.tableHeaderView=headerview; 62 63 } 64 65 #pragma mark -填充數據進行顯示 66 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 67 { 68 return 1; 69 } 70 71 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 72 { 73 return self.arrayM.count; 74 } 75 76 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 77 { 78 SLTableViewCell *cell=[SLTableViewCell cellWithTabelViewCell:tableView]; 79 SLTgDatas *data=self.arrayM[indexPath.row]; 80 cell.data=data; 81 return cell; 82 } 83 84 #pragma mark -設置狀態欄隱藏 85 -(BOOL)prefersStatusBarHidden 86 { 87 return YES; 88 } 89 90 @end 復制代碼 (2)該文件是字典轉對象模型文件 復制代碼 1 #import <Foundation/Foundation.h> 2 3 #import "SLGlobalCode.h" 4 5 @interface SLTgDatas : NSObject 6 7 @property (nonatomic,copy) NSString *title; 8 @property (nonatomic,copy) NSString *icon; 9 @property (nonatomic,copy) NSString *price; 10 @property (nonatomic,copy) NSString *buyCount; 11 12 @property (nonatomic,strong,readonly) UIImage *image; 13 14 //SLTg(tg) 15 -(instancetype)initWithTgDirectionary:(NSDictionary *)dict; 16 17 +(instancetype)tgDataWithDiectionary:(NSDictionary *)dict; 18 @end 復制代碼 復制代碼 1 #import "SLTgDatas.h" 2 3 @interface SLTgDatas () 4 { 5 UIImage *_image; 6 } 7 @end 8 9 @implementation SLTgDatas 10 11 -(UIImage *)image 12 { 13 if (_image==nil) { 14 _image=[UIImage imageNamed:self.icon]; 15 } 16 return _image; 17 } 18 /** 19 * 對代碼進行抽取,成為其他地方也可以用這個方法 20 */ 21 //SLTgRetrun(tg) 22 -(instancetype)initWithTgDirectionary:(NSDictionary *)dict 23 { 24 if (self=[self init]) { 25 [self setValuesForKeysWithDictionary:dict]; 26 } 27 return self; 28 } 29 +(instancetype)tgDataWithDiectionary:(NSDictionary *)dict 30 { 31 return [[self alloc] initWithTgDirectionary:dict]; 32 } 33 @end 復制代碼 (3)此文件是自定義cell對象,通過xib進行設計後,通過連線進行相關,方便控制器調用 復制代碼 1 #import <UIKit/UIKit.h> 2 3 #import "SLTgDatas.h" 4 5 @interface SLTableViewCell : UITableViewCell 6 7 @property (nonatomic,strong) SLTgDatas *data; 8 9 +(instancetype)cellWithTabelViewCell:(UITableView *)table; 10 11 @end 復制代碼 復制代碼 #import "SLTableViewCell.h" @interface SLTableViewCell() @property (weak, nonatomic) IBOutlet UIImageView *cellImage; @property (weak, nonatomic) IBOutlet UILabel *celltitle; @property (weak, nonatomic) IBOutlet UILabel *cellprice; @property (weak, nonatomic) IBOutlet UILabel *cellbuycount; @end @implementation SLTableViewCell +(instancetype)cellWithTabelViewCell:(UITableView *)table { static NSString *str=@"cell"; SLTableViewCell *cell=[table dequeueReusableCellWithIdentifier:str]; if (cell==nil) { cell=[[[NSBundle mainBundle] loadNibNamed:@"SLTgPlistView" owner:nil options:nil] firstObject]; } return cell; } -(void)setData:(SLTgDatas *)data { _data=data; self.cellbuycount.text=data.buyCount; self.cellImage.image=data.image; self.cellprice.text=data.price; self.celltitle.text=data.title; } @end 復制代碼 (4)是底部加載更多選項 復制代碼 1 #import <UIKit/UIKit.h> 2 3 @protocol SLFooterViewDelegate <NSObject> 4 5 -(void)loadMoreData; 6 7 @end 8 9 @interface SLFooterView : UIView 10 11 @property (nonatomic,weak) id<SLFooterViewDelegate> delegate; 12 @end 復制代碼 復制代碼 1 #import "SLFooterView.h" 2 @interface SLFooterView () 3 4 @property (weak, nonatomic) IBOutlet UIButton *clieckbt; 5 @property (weak, nonatomic) IBOutlet UIView *jiazai; 6 7 8 9 @end 10 @implementation SLFooterView 11 12 -(void)setDelegate:(id<SLFooterViewDelegate>)delegate 13 { 14 _delegate=delegate; 15 } 16 17 - (IBAction)btnclick { 18 self.clieckbt.hidden=YES; 19 self.jiazai.hidden=NO; 20 21 // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 22 // * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 23 // 24 // }); 25 // 26 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 27 if ([self.delegate respondsToSelector:@selector(loadMoreData)]) 28 { 29 [self.delegate loadMoreData]; 30 } 31 self.clieckbt.hidden=NO; 32 self.jiazai.hidden=YES; 33 }); 34 35 36 } 37 38 @end 復制代碼 以上就是利用xib進行設計的tableView進行顯示的列表數據 綜上所述:在自定義UITabelViewCell的時候,有兩種方式,要根據不同的場景進行利用。