当前位置: 首页 > news >正文

邯郸建设局公开网站站长网站seo查询

邯郸建设局公开网站,站长网站seo查询,湖南建筑信息网平台,电子商务网站建设步iOS学习 前言一#xff1a;TableView协议二#xff1a;cell的复用Cell的复用原理自定义cell总结 前言 UITableView是iOS开发中不可或缺的一部分#xff0c;它是苹果iOS SDK提供的一种用于展示数据列表的视图控件。我们对其中的cell进行自定义#xff0c;即可得到我们需要的… iOS学习 前言一TableView协议二cell的复用Cell的复用原理自定义cell总结 前言 UITableView是iOS开发中不可或缺的一部分它是苹果iOS SDK提供的一种用于展示数据列表的视图控件。我们对其中的cell进行自定义即可得到我们需要的UI界面 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath3.选择行的方法didSelectRowAtIndexPath- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath4.删除行的方法 :-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 一TableView协议 创建一个TableView我们首先需要加入UITableViewDelegate,UITableViewDataSource协议。其中UITableViewDataSource协议用来设置cell的行数列数。UITableViewDelegate协议用来设置cell的相关高度。 随后在.m文件中将TbaleView的委托对象和数据源对象设为自己。 _tableView.delegate self;_tableView.dataSource self;必须要实现的方法有如下几种 //分区的行数 - (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 行数 } //列数 -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {return 分区数; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {return 单元格高度; } //单元格样式也是自定义cell需要修改的地方。 -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {NSString *str cell;UITableViewCell *cell [_tableView dequeueReusableCellWithIdentifier:str];if (cell nil) {cell [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:str];} return cell;}剩余功能在项目中总结。 二cell的复用 cell的复用方式有两种注册和非注册此处给出代码来区分二者。 注册 //注册 - (void)viewDidLoad {[super viewDidLoad];//使用Nib注册cell[self.tableView registerNib:[UINib nibWithNibName:CustomCell bundle:nil] forCellReuseIdentifier:myCell];// 使用代码注册cell[self.tableView registerClass:[CustomCell class] forCellReuseIdentifier:myCell]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {NSString *identif mycell;UITableViewCell *cell [tableView dequeueReusableCellWithIdentifier:identifier];return cell; } 非注册 - (void)viewDidLoad {[super viewDidLoad]; } -(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {NSString *str cell;UITableViewCell *cell [_tableView dequeueReusableCellWithIdentifier:str];if (cell nil) {cell [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:str];}return cell; }注册与非注册相比需要在viewDidLoad中先对cell类进行注册并且在其后的使用中不需要判空。 这是因为通过注册方法如registerClass:forCellReuseIdentifier:或registerNib:forCellReuseIdentifier:将指定的单元格类或Nib文件与标识符关联起来。通俗来讲即表格视图已经知道要用哪个cell。 而在非注册的方式中表格视图并不知道需要使用哪个单元格类或Nib文件。因此每次使用前都需要进行判空操作这是必要的。 Cell的复用原理 iOS内部使用了三个容器 _cachedCells, availableCells, _reusableCells 完成了 Cell 的复用。 cachedCells为NSMutableDictionary 类 是一个缓存容器用于存储表格视图中的已创建的单元格对象。每个单元格对象都与其对应的重用标识符相对应。当表格视图需要显示某个单元格时会首先在_cachedCells 中查找是否有可复用的单元格对象如果有则直接使用否则才会创建新的单元格对象。reusableCells 为NSMutableDictionary 是一个重用单元格的缓存容器用于存储可供重用的单元格对象。availableCells 类型NSMutableArray是一个可用单元格的缓冲池用于存储当前可用的、已显示在表格视图中的单元格对象。当单元格滚出屏幕时会被移动到availableCells 中等待复用。这样在需要显示新的单元格时可以首先尝试从 availableCells中获取可复用的单元格对象而不是每次都创建新的单元格。 重用优先级是先检查 reusableCells然后才是 cachedCells 中的缓存。 简而言之一开始出现的单元格和与其对应的键值对indexPath储存在cachedCells中。拷贝一份到availableCells中当有单元格出现在视图时先检查reusableCells中有没有可以复用的单元格没有则新建一个单元格并把顶部划出视图的单元格加入进reusableCells。 自定义cell 先给出效果 其中的每一栏就是一个自定义cell下面给出实现方法 创建一个继承与UITableViewCell的myCell。 interface myCell : UITableViewCell property (nonatomic, strong) UIButton *Btn; property (nonatomic, strong) UILabel *label1; property (nonatomic, strong) UIImageView * imageView1;end 然后在.m文件中我们改写两个方法 -(instancetype) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {self [super initWithStyle:style reuseIdentifier:reuseIdentifier];_imageView1 [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 20, 20)];_imageView1.image [UIImage imageNamed:头像.jpeg];[self.contentView addSubview:_imageView1];[[NSNotificationCenter defaultCenter] addObserver:self selector:selector(receiveNotice:) name:notice object:nil];_label1 [[UILabel alloc] init];_label1.text 笙;_label1.textColor [UIColor blackColor];_label1.backgroundColor [UIColor clearColor];_label1.font [UIFont systemFontOfSize:25];[self.contentView addSubview:_label1];return self; }-(void)layoutSubviews {[super layoutSubviews];CGFloat screenWidth UIScreen.mainScreen.bounds.size.width;_label1.frame CGRectMake(100, 10, screenWidth, 90);_imageView1.frame CGRectMake(10, 10, 80, 80); } end其中-(instancetype) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{方法是修改cell的样式 -(void)layoutSubviews是修改布局视图。 我们还可以根据index的不同分区列在同一分区创建不同的的cell。这点在后续的博客中会记录。 总结 以上就是笔者学习的自定义cell和cell的复用有关内容多写代码不断遇到bug才会有更深入的理解。
http://www.pierceye.com/news/154338/

相关文章:

  • 艺友网站建设网站需要的栏目
  • 教育类网站 前置审批重庆网站建设首选卓光
  • 宁波做网站哪家好个人做论坛网站怎么做
  • 公司网站建设北京电子设计工程期刊
  • 网站前端建设都需要什么c 网站开发案例详解
  • 无锡网站无忧网站建设
  • 最火高端网站设计厂家宁波新亚建设内部网站
  • 娱乐网站建设宁波网站建设多少钱一年
  • app制作器手机版下载网站关键词优化排名怎么做
  • 网站站外优化推广方式网站建设网站需要什么软件有哪些
  • 重庆建设厂招聘信息网站做坑网站需要
  • 光谷 网站建设公司海珠区住房和水务建设局网站
  • 公司做网站还是做appwordpress多文件传递变量
  • 网站教学苏州优化网站
  • 扁平化网站下载网站设计公司深圳
  • flash网站用什么做网站建设免费软件有哪些
  • 卖车网站投资网站建设
  • 网站开发过程 文档合肥婚恋网站建设
  • 网站自助建设目录更新 wordpress
  • 百度给做网站吗flash网站制作教程 下载
  • 化工销售怎么做网站wordpress 论坛功能
  • 网上做平面设计兼职不错的网站网站 seo优化
  • seo做的最好的网站设计专业
  • 顾家家居网站是哪个公司做的东莞软件有限公司
  • 云南做网站哪家好wordpress文章内多页效果
  • 上海做网站公司哪家好建筑公司有哪些部门和职位
  • 用front page2003做网站的导航条网站的站点建设分为
  • 开封网站建设zducmwordpress评论ajax
  • 电脑如何做网站空间西安网站建设sxyun
  • 济南历城区网站建设2022年没封网站直接进入