UITableView
知识点:
1)UITableView
2)UITableViewCell
======================================================
一、UITableView
1、UITableView介绍
UITableView为列表视图,继承UIScrollView
2、常用的属性
1)separatorColor 分割线颜色
2)separatorStyle 分割线样式
3)separatorInset 分割线的位置
3)rowHeight cell的高度,默认为44
4)dataSource 数据源代理
5)delegate 代理
3、复用机制
4、常用代理
//设置组的数目
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
//设置每组的cell数目
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
//设置cell的内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
//设置cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
//当点击cell时会自动调动
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
=====================================================
二、UITableViewCell
1、UITableViewCell介绍
UITableView上每一行就是一个UITableViewCell,用来显示不同的内容
2、cell的样式
1⃣️. UITableViewCellStyleDefault, // 只有一个label(即textLabel正标题)在右边,和imageView在左边
2⃣️. UITableViewCellStyleValue1, // 两个label,左边的label(即textLabel正标题)字体默认为黑色并 且向左对齐,右边的label字体(即detailTextLabel副标题)默认为黑色并且向右对齐
3⃣️. UITableViewCellStyleValue2, //两个label,左边的label(即textLabel正标题)字体默认为蓝色并 且向右对齐,右边的label字体(即detailTextLabel副标题)默认为黑色并且向左对齐
4⃣️. UITableViewCellStyleSubtitle // Left aligned label on top and left aligned label on bottom with gray text (Used in iPod).上下两个label,上边的label(即textLabel正标题)字体默认为灰色并且向左对 齐,下边的label字体(即detailTextLabel副标题)默认为灰色并且向左对齐
3、UITableViewCell属性(使用cell中的系统控件时,要注意cell的样式,倘若没有,就算写了也不会显示)
1)textLabel 标题
2)detailTextLabel 副标题
3)imageView
4)accessoryType 右边的图片样式(默认是UITableViewCellAccessoryNone)设置了样式才会显示
/**
UITableViewCellAccessoryNone 没有样式(默认值)
UITableViewCellAccessoryDisclosureIndicator 箭头
UITableViewCellAccessoryDetailDisclosureButton 感叹号和箭头
UITableViewCellAccessoryCheckmark 打钩
UITableViewCellAccessoryDetailButton 感叹号
*/
5)selectionStyle 点击cell时高亮效果,具体样式如下
/**
UITableViewCellSelectionStyleNone 无
UITableViewCellSelectionStyleDefault 默认,灰色
*/
6)cell的操作
删除cell
- (void)deleteRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
添加cell
- (void)insertRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
移动cell
- (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath
刷新
- (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
4、组头和表头区别
1⃣️.组头或者组尾的显示需要代理的实现
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
// 设置组头或者组尾的高度才会调用viewForHeaderInSection或者viewForFooterInSection代理
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
2⃣️.UITableViewHeaderFooterView属性
1)textLabel 标题
2)detailTextLabel 副标题
3⃣️.表头(tableHeaderView),表头只有一个,高度由当前创建的view决定,宽度由tableView决定
5、tableView其他常用代理
1)返回组头的标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
2)返回组尾的标题
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;
3) 是否允许编辑,默认全部允许编辑
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
4)修改删除按钮上的文字
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
5)编辑状态,实现这个代理就可以删除或插入(通过判断editingStyle的类型,做出相应的操作)
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
6) // 8.0 的新代理方法
// 同时设置左划cell时出现多个按钮(删除、置顶、更多)
// 如果实现了这个代理方法,自带的删除就没有了
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
//通过以下方法创建按钮
+ (instancetype)rowActionWithStyle:(UITableViewRowActionStyle)style title:(nullable NSString *)title handler:(void (^)(UITableViewRowAction *action, NSIndexPath *indexPath))handler;
7)移动cell的代理,实现了这个代理才能移动
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
8)返回索引
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
【备注】UITableViewIndexSearch 搜索的图标
9)控制索引
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
【备注】返回-1,什么都不做
UITableView的更多相关文章
- iOS UITableView 与 UITableViewController
很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名.项目地址. UITab ...
- UITableView(二)
#import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...
- iOS: 在UIViewController 中添加Static UITableView
如果你直接在 UIViewController 中加入一个 UITableView 并将其 Content 属性设置为 Static Cells,此时 Xcode 会报错: Static table ...
- iOS 编辑UITableView(根据iOS编程编写)
上个项目我们完成了 JXHomepwner 简单的应用展示,项目地址.本节我们需要在上节项目基础上,增加一些响应用户操作.包括添加,删除和移动表格. 编辑模式 UITableView 有一个名为 e ...
- 使用Autolayout实现UITableView的Cell动态布局和高度动态改变
本文翻译自:stackoverflow 有人在stackoverflow上问了一个问题: 1 如何在UITableViewCell中使用Autolayout来实现Cell的内容和子视图自动计算行高,并 ...
- iOS - UITableView中Cell重用机制导致Cell内容出错的解决办法
"UITableView" iOS开发中重量级的控件之一;在日常开发中我们大多数会选择自定Cell来满足自己开发中的需求, 但是有些时候Cell也是可以不自定义的(比如某一个简单的 ...
- UITableView cell复用出错问题 页面滑动卡顿问题 & 各杂七杂八问题
UITableView 的cell 复用机制节省了内存,但是有时对于多变的自定义cell,重用时会出现界面出错(例如复用出错,出现cell混乱重影).滑动卡顿等问题,这里只简单敲下几点复用出错时的解决 ...
- UITableview delegate dataSource调用探究
UITableview是大家常用的UIKit组件之一,使用中我们最常遇到的就是对delegate和dataSource这两个委托的使用.我们大多数人可能知道当reloadData这个方法被调用时,de ...
- UITableView点击每个Cell,Cell的子内容的收放
关于点击TableviewCell的子内容收放问题,拿到它的第一个思路就是, 方法一: 运用UITableview本身的代理来处理相应的展开收起: 1.代理:- (void)tableView:(UI ...
- 使用UITableView的分组样式
分组样式顾名思义是对TableView中的数据行进行分组处理,每个分组都有一个header和footer. TableView中header的英文文本是大写的,footer的英文文本是小写的.如下图浅 ...
随机推荐
- Azure ARM (7) ARM Template - 使用Visual Studio编辑
<Windows Azure Platform 系列文章目录> 之前介绍的ARM Template,都是使用文本编辑器来编辑JSON文件的. 文本讲介绍如何使用Visual Studio, ...
- [SDK2.2]Windows Azure Virtual Network (3) 创建AD Server并添加至Virtual Network
<Windows Azure Platform 系列文章目录> 在之前的文章中,笔者已经向大家介绍了如何创建一个简单的Azure Virtual Network. 本章我将创建一台域服务器 ...
- 大话PHP缓存头
304的请求机制和200有什么不一样呢?在fiddler中查看304请求的时候突然想到这个问题,就想到研究下这个304请求机制了. 我们自己在nginx上放一个文件,test.png.可以使用下面的地 ...
- 浅谈图片蒙版效果-webkit-mask
会用PS的童鞋一定知道“蒙版”的概念,它可以在图片上实现一定的遮罩效果,当然这里我们不介绍ps里的蒙版,而是介绍利用CSS3的新属性-webkit-mask来实现网页中的图片遮罩效果. 大家对-web ...
- js无法对远程图片进行Base64转码
web端图片转成Base64码报错 Image from origin 'http://114.215.87.123:8900' has been blocked from loading by Cr ...
- MySqlHelper、CacheHelper
MySqlHelper代码: using System; using System.Collections; using System.Collections.Generic; using Syste ...
- c#初学-多线程中lock用法的经典实例
本文转载自:http://www.cnblogs.com/promise-7/articles/2354077.html 一.Lock定义 lock 关键字可以用来确保代码块完成运行,而不会被 ...
- EditText html 出现提示 This text field does not specify an inputType or a hint
1 <EditText 2 android:layout_width="fill_parent" 3 android:layout_height="wrap_c ...
- Nancy 引用源码与NuGet安装差异
使用NuGet安装Nancy和直接引用源码项目存在一些差异,如序列化,授权验证问题. 如果引用源码的话,自定义JsonSerializer,如下: 注意,需要使用NuGet安装Newtonsoft.J ...
- MongoDB管理工具的插件系统
MongoDB管理工具 MongoCola的开发已经进入第三个年头了. 官方对于C#驱动的投入不够导致了很多东西都必须自己实现,但是不管怎么样,工具现在已经很强大了. 最近准备着手插件系统的开发,简 ...