上一篇说了UITableView的重用机制,让我们对UITableView有了简单了解,下面说说UITableView的属性及常见方法。

一、属性

1、frame:设置控件的尺寸和大小

2、backgroundColor:设置控件的颜色

3、style:获取表视图的样式

4、dataSource:设置UITableViewDataSource代理

5、delegate:设置UITableViewDelegate代理

6、backgroundView:设置背景视图

7、editing:是否允许编辑,默认为NO

8、sectionHeaderHeight:设置组表视图的头标签高度

9、sectionFooterHeight:设置组表视图的尾标签高度

10、allowsSelection:在非编辑下,行是否可以选中,默认YES

11、allowsSelectionDuringEditing:控制某一行时,是否可以编辑,默认NO

12、allowsMultipleSelection:是否可以选择多行,默认NO

13、allowsMutableSelectionDuringEditing:在选择多行的情况下,是否可以编辑,默认NO

14、sectionIndexTrackingBackgroundColor:设置选中部分的背景颜色

15、sectionIndexMinimumDisplayRowCount:显示某个组索引列表在右边当行数达到这个值,默认是NSInteger的最大值

16、sectionIndexColor:选择某个部分的某行改变这一行上文本的颜色

17、separatorStyle:设置单元格分隔线的样式

18、separatorColor:设置选中单元格分隔线的颜色

19、tableHeaderView:设置组表的头标签视图

20、tableFooterView:设置组表的尾标签视图

二、常见方法

1、- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

tableview 有多少个section

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

     ;

 }

2、- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section;

对应的section有多少行

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

     ;
 }

3、- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;——返回指定的 row 的高度

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;——返回指定的 section的header view 的高度

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;——返回指定的 section的footer view 的高度

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
     ;
 }

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
     ;
 }

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
     ;
 }

4、- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath;

返回指定的row 的cell,可以返回自定义的cell;

这里只看看最基本的用法:

 - (UITableViewCell *)tableView:(UITableView *)tableView_ cellForRowAtIndexPath:(NSIndexPath *)indexPath{

     static NSString *Indentifier = @"UITableViewCell";
     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
     if (!cell) {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Indentifier];
     }

     //移除所有子视图
     [cell.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
         UIView *view = (UIView*)obj;
         [view removeFromSuperview];
     }];

     //添加新视图
     UILabel *label = [[UILabel alloc]initWithFrame:(CGRect){,,,}];
     label.text = [NSString stringWithFormat:@"第%d行",(int)indexPath.row];
     [cell addSubview:label];

     UIImageView *imageIcon = [[UIImageView alloc] initWithFrame:(CGRect){,,,}];
     imageIcon.image = [UIImage imageNamed:@"u=3971024035,4095552302&fm=21&gp=0"];
     [cell addSubview:imageIcon];

     return cell;

 }

如图:

5、- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

返回指定的section 的 header  的 title,如果这个section header  有返回view,那么title就不起作用了。

 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
     ) {
         return @"标题一";
     }else
         return @"标题二";

 }

如图:

6、 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;

同理设置FooterView:- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;

返回指定的 section header 的view,如果没有,这个函数可以不返回view

注意:设置了headerView一定不要忘记返回高度!

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
     UIView *headerView = [[UIView alloc] initWithFrame:(CGRect){,,,}];

     UILabel *title = [[UILabel alloc] initWithFrame:(CGRect){,,,}];
     title.text = @"headerView";
     title.textColor = [UIColor orangeColor];
     title.textAlignment = NSTextAlignmentCenter;
     [headerView addSubview:title];

     UIImageView *headImage = [[UIImageView alloc] initWithFrame:(CGRect){,,,}];
     headImage.image =[UIImage imageNamed:@"u=1522827729,398642494&fm=21&gp=0"];
     [headerView addSubview:headImage];

     return headerView;
 }

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{

     ;
 }

如图:

7、 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

当用户选中某个行的cell的时候,回调用这个。但是首先,必须设置tableView.allowsSelection = YES 才行。

 - (void)tableView:(UITableView *)TableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
     ) {
         switch (indexPath.row) {
             :
                 //点击每行想实现什么动作写在这里就好了
                 break;

             default:
                 break;
         }
     }
 }

下面附上完整代码:

 @interface ViewController ()<UITableViewDataSource,UITableViewDelegate>{

     UITableView *tableView;
     NSArray *dataArray;

 }

 @end

 @implementation ViewController

 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view, typically from a nib.

     //初始化,设置位置大小
     tableView = [[UITableView alloc] initWithFrame:(CGRect){,,self.view.frame.size.width,self.view.frame.size.height}];
     //添加到视图
     [self.view addSubview:tableView];
     //设置UITableViewDeledate代理
     tableView.delegate = self;
     //设置UITableViewDataSource代理
     tableView.dataSource = self;
     //设置单元格分隔线样式
     tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

     tableView.allowsSelection = YES;

 }

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
     ;
 }

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

     ;
 }

 - (UITableViewCell *)tableView:(UITableView *)tableView_ cellForRowAtIndexPath:(NSIndexPath *)indexPath{

     static NSString *Indentifier = @"UITableViewCell";
     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
     if (!cell) {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Indentifier];
     }

     //移除所有子视图
     [cell.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
         UIView *view = (UIView*)obj;
         [view removeFromSuperview];
     }];

     //添加新视图
     UILabel *label = [[UILabel alloc]initWithFrame:(CGRect){,,,}];
     label.text = [NSString stringWithFormat:@"第%d行",(int)indexPath.row];
     [cell addSubview:label];

     UIImageView *imageIcon = [[UIImageView alloc] initWithFrame:(CGRect){,,,}];
     imageIcon.image = [UIImage imageNamed:@"u=3971024035,4095552302&fm=21&gp=0"];
     [cell addSubview:imageIcon];

     return cell;

 }

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
     ;

 }

 //- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
 //    if (section==0) {
 //        return @"标题一";
 //    }else
 //        return @"标题二";
 //
 //}

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
     UIView *headerView = [[UIView alloc] initWithFrame:(CGRect){,,,}];

     UILabel *title = [[UILabel alloc] initWithFrame:(CGRect){,,,}];
     title.text = @"headerView";
     title.textColor = [UIColor orangeColor];
     title.textAlignment = NSTextAlignmentCenter;
     [headerView addSubview:title];

     UIImageView *headImage = [[UIImageView alloc] initWithFrame:(CGRect){,,,}];
     headImage.image =[UIImage imageNamed:@"u=1522827729,398642494&fm=21&gp=0"];
     [headerView addSubview:headImage];

     return headerView;
 }

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{

     ;
 }

 - (void)tableView:(UITableView *)TableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
     ) {
         switch (indexPath.row) {
             :
                 //点击每行想实现什么动作写在这里就好了
                 break;

             default:
                 break;
         }
     }
 }

ios基础篇(十四)——UITableView(二)属性及基本用法的更多相关文章

  1. ios基础篇(四)——UILabel的常用属性及方法

    UILabel的常用属性及方法:1.text //设置和读取文本内容,默认为nil label.text = @”文本信息”; //设置内容 NSLog(@”%@”, label.text); //读 ...

  2. IOS基础之(十四) KVO/KVC

    资料参考: http://www.cnblogs.com/kenshincui/p/3871178.html http://www.cnblogs.com/stoic/archive/2012/07/ ...

  3. Bootstrap入门(二十四)data属性

    Bootstrap入门(二十四)data属性 你可以仅仅通过 data 属性 API 就能使用所有的 Bootstrap 插件,无需写一行 JavaScript 代码.这是 Bootstrap 中的一 ...

  4. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...

  5. ios基础篇(二十六)—— UITableViewCell的分组索引与标记

    一.表视图的索引目录 首先要创建一个TableView,之前有说过,这里就不详细说了(参考前面第十四篇). 直接贴代码吧, #import "ViewController.h" @ ...

  6. linux基础-第十四单元 Linux网络原理及基础设置

    第十四单元 Linux网络原理及基础设置 三种网卡模式图 使用ifconfig命令来维护网络 ifconfig命令的功能 ifconfig命令的用法举例 使用ifup和ifdown命令启动和停止网卡 ...

  7. ios基础篇(五)——UITextField的详细使用

    UItextFieldField通常用于外部数据输入,以实现人机交互. 以下是UItextFieldField的属性及常见用法: 1.textField :设置文本框的默认文本. 2.Placehol ...

  8. ios基础篇(二十四)—— 文字、图片的绘制及其自定义Button

    这篇文章我们主要来拿官方的控件来研究一下,我们来仿照官方的控件,自己来实现它提供的控件: 首先来看看基本的图片与文字的绘制,很简单. 一.imageView 所有的视图都是继承自UIView,所以我们 ...

  9. ios基础篇(二十八)—— UITableView的上拉加载

    本文主要展示一个demo实现UITableView的上拉加载数据: 先看看效果图: 接着上拉,加载更多数据: 主要实现的效果是在我们上拉结束拖拽之后,开始加载数据,数据加载的过程中有滚动轮提示用户正在 ...

随机推荐

  1. JavaNote01_变量 基本数据类型

    >主要内容: 变量的初始化.赋值.读写操作 8中基本数据类型(取值范围).整数的直接量(字面量)是哪种类型.浮点数的字面量是哪种类型 >变量 >>声明变量:开启一个存储单元,用 ...

  2. win10 内测14352 加入了容器 和docker新功能,想体验的赶快升级

    原来只在server2016上有,现在加入到win0内测版了windows 容器提供了两种级别的隔离技术,分别是Windows Server container  和Hyper-V Container ...

  3. 腾讯优测优分享 | Android适配中的一些特殊情况小结

    腾讯优测是专业的自动化测试平台,提供全面兼容适配测试,远程真机租用等多维度的测试服务! 作为一名"艰苦卓绝"的软件工程师,我在开发路上经常被各种奇葩情况虐的体无完肤...今天就想与 ...

  4. WP7系统托盘和应用程序栏

    (一)系统托盘和应用程序栏系统托盘(1)显示系统级别的状态信息(2)Apps能隐藏和显示系统托盘Micosoft.Phone.Shell.SystemTray.IsVisible=true;应用程序栏 ...

  5. junit批量测试

    引入一种“测试套件”的概念: package test; import org.junit.Test; public class Test1 { private int value = 1; publ ...

  6. 3-WebPack

    一. 什么是WebPack WebPack可以看做是模块加载.打包工具. 它所做的事情是 1.分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,Typ ...

  7. 12-28 显示团购数据界面的搭建,cell的自定义方面的知识总结

    1.通过plist加载模型数据 2.controller中懒加载数据 3.设置tableView的数据源 4.写数据源的方法 5.观察演示项目,分析通过默认的cell的4种现实方式,无法实现要想要的现 ...

  8. HTML自动换行的问题

    有时文本文字已经超过所在的区域,但是文字还是不自动换行 可以用强制换行 强制不换行div{ white-space:nowrap;}自动换行div{ word-wrap:break-word; wor ...

  9. 最精简的IOCP封装

    最精简的IOCP封装,DELPHI XE8直接编译通过.Winsock2.pas即使用DELPHI自带的,相信XE7也能编译,或者XE6,XE5也能. 单说Winsock2.pas,我见过无数种版本的 ...

  10. 表单input按钮在各浏览器之间的兼容性

    从网上看了这篇关于表单input按钮的浏览器兼容性问题,总结的还不错,所以copy下来学习下. input按钮在各个浏览器之间的兼容性问题,看下边这段代码: input.item { backgrou ...