博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS开发UI篇--UITableView的自定义布局==xib布局
阅读量:5060 次
发布时间:2019-06-12

本文共 6194 字,大约阅读时间需要 20 分钟。

利用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 ()
8 9 @property (weak, nonatomic) IBOutlet UITableView *tableview;10 11 @property (nonatomic,strong) NSMutableArray *arrayM;12 13 @end14 15 @implementation SLViewController16 17 -(void)loadMoreData18 {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 *)arrayM33 {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)viewDidLoad50 {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 *)tableView67 {68 return 1;69 }70 71 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section72 {73 return self.arrayM.count;74 }75 76 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath77 {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)prefersStatusBarHidden86 {87 return YES;88 }89 90 @end

 

(2)该文件是字典转对象模型文件

1 #import 
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 SLTgDatas10 11 -(UIImage *)image12 {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 *)dict23 {24     if (self=[self init]) {25        [self setValuesForKeysWithDictionary:dict];26     }27     return self;28 }29 +(instancetype)tgDataWithDiectionary:(NSDictionary *)dict30 {31     return [[self alloc] initWithTgDirectionary:dict];32 }33 @end

 

(3)此文件是自定义cell对象,通过xib进行设计后,通过连线进行相关,方便控制器调用

1 #import 
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 
2 3 @protocol SLFooterViewDelegate
4 5 -(void)loadMoreData; 6 7 @end 8 9 @interface SLFooterView : UIView10 11 @property (nonatomic,weak) id
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     @end10     @implementation SLFooterView11 12     -(void)setDelegate:(id
)delegate13 {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.022 // * 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的时候,有两种方式,要根据不同的场景进行利用。

转载于:https://www.cnblogs.com/android-victor/p/3760120.html

你可能感兴趣的文章
外部Javascript文件获取.NET页面中服务器控件的ID
查看>>
Jquery Easy UI 中的datagrid通过url调用webservice返回json数据
查看>>
c++野指针 之 实战篇
查看>>
【Ruby】Ruby的model学习——Active Record Associations
查看>>
关于写的Java书籍进展
查看>>
C++多线程
查看>>
Android ----制作自己的Vendor
查看>>
iOS 中隐藏UITableView最后一条分隔线
查看>>
Android初级教程理论知识(第一章快速入门)
查看>>
c#基础知识梳理(五)
查看>>
高精度大数计算R^n与字符串的处理
查看>>
Sql FAQ
查看>>
【Android】冷门常用 ADB
查看>>
知识分子真正的悲哀是依附强权放弃说理
查看>>
优秀简历要遵循哪些规则
查看>>
Grow A Search Result Specification
查看>>
第一次使用Android Studio时你应该知道的一切配置(一)
查看>>
设计模式之结构型(5)-外观模式(Facade)
查看>>
Python使用requirements.txt安装类库
查看>>
Linux top命令的用法详细详解
查看>>