你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS開發UI篇--UITableView的自定義布局==xib布局

IOS開發UI篇--UITableView的自定義布局==xib布局

編輯:IOS開發綜合
利用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的時候,有兩種方式,要根據不同的場景進行利用。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved