自定义Cell几种方法
来源:互联网 发布:怎样开通淘宝客推广 编辑:程序博客网 时间:2024/05/10 02:48
.h文件
#import <UIKit/UIKit.h>@class ImageCellStyle;@interface ActionCell : UITableViewCell@property (nonatomic, strong) ImageCellStyle *imageStyle;- (void)settingData:(ImageCellStyle *)imagecellStyle;@end
.m
//// ActionCell.m// 影楼//// Created by Jane on 4/21/15.// Copyright (c) 2015 Jane. All rights reserved.//#import "ActionCell.h"#import "ImageCellStyle.h"#define NJNameFont [UIFont systemFontOfSize:13]#define NJTextFont [UIFont systemFontOfSize:14]@interface ActionCell ()@property (nonatomic, retain) UIImageView *pictureView;@property (nonatomic, retain) UILabel *nameView;@property (nonatomic, retain) UILabel *timeView;@property (nonatomic, retain) UILabel *muchView;@property (nonatomic, retain) UILabel *styleView;@end@implementation ActionCell@synthesize pictureView,nameView,muchView,styleView,timeView;- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { pictureView = [[UIImageView alloc]initWithFrame: CGRectMake(0, 0, 100, 100)]; [self.contentView addSubview:pictureView]; nameView = [[UILabel alloc] initWithFrame:CGRectMake( 110, 10, 50, 20)]; [self.contentView addSubview:nameView]; nameView.font = NJNameFont; //nameView.backgroundColor = [UIColor blueColor]; [self.contentView addSubview:self.nameView]; timeView = [[UILabel alloc]initWithFrame: CGRectMake( 110, 30, 50, 20)]; [self.contentView addSubview:timeView]; muchView = [[UILabel alloc]initWithFrame: CGRectMake( 110, 50, 50, 20)]; muchView.font = NJNameFont; [self.contentView addSubview:muchView]; styleView = [[UILabel alloc] initWithFrame: CGRectMake( 110, 70, 50, 20)]; styleView.font = NJNameFont; [self.contentView addSubview:styleView]; } return self;}- (void)setStatusFrames:(ImageCellStyle *)statusModle{ _imageStyle = statusModle;}#pragma mark 设置数据- (void)settingData:(ImageCellStyle *)imagecellStyle{ self.pictureView.image = [UIImage imageNamed:@"1.png"]; self.nameView.text = imagecellStyle.name; self.muchView.text = imagecellStyle.much; self.timeView.text = imagecellStyle.style; self.styleView.text = imagecellStyle.time;}/** * 根据文本获取文本占用的大小 * * @param string 文本 * @param font 字体 * @param maxSize 最大的宽高 * * @return = */- (CGSize)sizeWithString:(NSString *)string font:(UIFont *)font maxSize:(CGSize)maxSize{ NSDictionary *dict = @{NSFontAttributeName:font}; // Size:文本能占用的最大宽高 // options: ios提供的计算方式 // attributes: 字体和大小 // context: nil // 如果计算的文本超过了给定的最大的宽高,就返回最大宽高,如果没有超过,就返回真实占用的宽高 CGRect rect = [string boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil]; return rect.size;}- (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state}@end
.h
#import <Foundation/Foundation.h>@interface ImageCellStyle : NSObject@property (nonatomic,copy) NSString *style;@property (nonatomic,copy) NSString *name;@property (nonatomic,copy) NSString *time;@property (nonatomic,copy) NSString *much;@property (nonatomic,copy) NSString *picture;- (instancetype) initWithDict: (NSDictionary *)dict;//对象方法+ (instancetype) weiboWithDict: (NSDictionary *)dict;//类方法@end
.m
#import "ImageCellStyle.h"@implementation ImageCellStyle-(instancetype)initWithDict:(NSDictionary *)dict { if (self = [super init]) { //使用KVC [self setValuesForKeysWithDictionary:dict]; } return self;}+(instancetype)weiboModelWithDict:(NSDictionary *)dict{ return [[self alloc]initWithDict:dict];}@end
controller 方法
.m
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 100.0f;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *cellIndentifiter = @"CellIndentifiter"; ActionCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIndentifiter]; if (cell == nil) { cell = [[ActionCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIndentifiter]; } [cell settingData:_image]; return cell;}
第二种通过xib创建
1、新建类,基于UITableViewCell
例如 @interface CellSearch : UITableViewCell
2、新建空 xib 文件
例如命名为 CellSearch.xib (名字要跟类名一样)
拖一个UITableViewCell控件到xib中
(你可以在这个cell里面放你想放的东东)
3、使用
经过1、2步,自定义的cell已经建好了
在cellForRowAtIndexPath 方法中使用
CellSearch *cell = [tableView dequeueReusableCellWithIdentifier:@”CellSearch”];
if(!cell) {
cell = [[[NSBundle mainBundle] loadNibNamed:@”CellSearch” owner:self options:nil]lastObject];
}
return cell;
运行看效果
4、关联xib与类文件(这个关联我经常弄错)
(到第3步,你已经可以看到自定义的cell了,但是还不能获取cell里面的信息,因为没有关联)
选中CellSearch.xib中的UITableViewCell控件,将类名关联为CellSearch
(然后就是Cell内普通的控件关联了)
5、使用
在cellForRowAtIndexPath 方法中使用
例如:
CellSearch *cell = [tableView dequeueReusableCellWithIdentifier:@”CellSearch”];
if(!cell) {
cell = [[[NSBundle mainBundle] loadNibNamed:@”CellSearch” owner:self options:nil]lastObject];
}
cell.nameTextField.text = @”tom”; //关联后可以直接设置cell内的控件
return cell;
第三种就是直接在
#import <Foundation/Foundation.h>#import "Global.h"@interface YYtg : NSObject@property(nonatomic,copy)NSString *buyCount;@property(nonatomic,copy)NSString *icon;@property(nonatomic,copy)NSString *price;@property(nonatomic,copy)NSString *title;YYinitH(tg)@end
#import "YYtg.h"@implementation YYtgYYinitM(tg)@end
#import "YYViewController.h"#import "YYtg.h"@interface YYViewController ()<UITableViewDataSource>@property(nonatomic,strong)NSArray *tg;@property (strong, nonatomic) IBOutlet UITableView *tableview;@end@implementation YYViewController- (void)viewDidLoad{ [super viewDidLoad]; self.tableview.rowHeight=100;}#pragma mark- 懒加载-(NSArray *)tg{ if (_tg==nil) { NSString *fullpath=[[NSBundle mainBundle]pathForResource:@"tgs.plist" ofType:nil]; NSArray *temparray=[NSArray arrayWithContentsOfFile:fullpath]; NSMutableArray *arrayM=[NSMutableArray arrayWithCapacity:temparray.count]; for (NSDictionary *dict in temparray) { YYtg *tg=[YYtg tgWithDict:dict]; [arrayM addObject:tg]; } _tg=[arrayM mutableCopy]; } return _tg;}#pragma mark-数据显示-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1;}-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return self.tg.count;}-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ //读取xib中的数据// NSArray *arrayM=[[NSBundle mainBundle]loadNibNamed:@"tgcell" owner:nil options:nil];// UITableViewCell *cell=[arrayM firstObject]; static NSString *identifier=@"tg"; UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier]; if (cell==nil) { // cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; cell= [[[NSBundle mainBundle]loadNibNamed:@"tgcell" owner:nil options:nil] firstObject]; } YYtg *tg=self.tg[indexPath.row]; //设置数据 //使用tag UIImageView *imgv=(UIImageView *)[cell viewWithTag:1]; imgv.image=[UIImage imageNamed:tg.icon]; UILabel *buyCount=(UILabel *)[cell viewWithTag:4]; buyCount.text=[NSString stringWithFormat:@"已有%@人购买",tg.buyCount]; UILabel *title=(UILabel *)[cell viewWithTag:2]; title.text=tg.title; UILabel *price=(UILabel *)[cell viewWithTag:3]; price.text=[NSString stringWithFormat:@"$%@",tg.price]; //返回cell return cell;}//隐藏状态栏-(BOOL)prefersStatusBarHidden{ return YES;}@end
- 自定义Cell几种方法
- 几种UITableview自定义Cell的办法
- 几种UITableview自定义Cell的办法
- 三种自定义CELL 的方法
- 自定义cell另一种方法
- 几种cell动画
- 几种设置UITableView的cell动态高度的方法
- IOS封装自定义Cell方法
- 自定义cell默认初始化方法
- 自定义Cell上的点击事件两种方法
- IOS中自定义cell大小的两种方法
- cell的几种style
- 解决Cell重用内容混乱的几种简单方法,有些方法会增加内存
- sizeWithFont方法_自定义cell高度
- iOS-自定义cell的方法步骤
- 自定义不等高cell的storyboard方法
- 有关自定义等高的cell方法
- UITableView的自定义cell方法总结
- 对函数中指针传递的理解
- Direct Show的前世今生
- Greatest Number
- 关于Spring3报org.aopalliance.intercept.MethodInterceptor错的问题解决方法
- C#(int)中Convert、Parse、TryParse的区别
- 自定义Cell几种方法
- C语言 人环游戏
- matlab 的 colormap 函数详解
- 用python 实现矩阵乘法
- ubuntu/deepin 禁用IPV6
- 使用SASS修改iconic样式
- cocos2dx 3.x版本 技能冷却效果的实现
- leetcode 日经贴,Cpp code -Same Tree
- UIButton圆角的设置以及一些系统自定义button