6.14.1 UITableViewDataSource协议方法初始化数据
     //设置组与组之间的间距
    self.tableView.sectionHeaderHeight=5;//footer
   

//将类与代理类建立关联,用代码或者利用连线的方式来实现

self.tableView.dataSource = self;

 
//设置tableView分组

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

 //设置tableview每一组Section的行数

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

 //设置cell属性和样式
- (UITableViewCell *)tableView:(UITableView *)tableView

cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//添加右侧索引文字

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{

return [self.carsGroups valueForKeyPath:@"title"];

}
/tableView进入编辑状态后,每行cell编辑按钮的样式设置

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath*)indexPath

{

if (indexPath.row == 0) { // 第一行是插入样式

return UITableViewCellEditingStyleInsert;

}else{

return UITableViewCellEditingStyleDelete;

}

}
//重写该方法,可实现cell滑动删除操作
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
  //先删除数据模型中的数据
   [self.contacts removeObjectAtIndex:indexPath.row];
  //再局部刷新tableVewl中的cell信息
   [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}
1.1.1 }UITableViewDetegate协议方法监听操作
//tableview选中监听方法实现
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:

(NSIndexPath *)indexPath{}
//tableview逐行设置cell行高监听方法实现
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:
6.14.2 TableView常用属性

//设置滚动区域的偏移

self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);
//设置行高

self.tableView.rowHeight = 60;

//设置分割线

self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

//设置分割线颜色

self.tableView.separatorColor = [UIColor brownColor];

//cell不允许选中

self.tableView.allowsSelection = NO;

//设置分组行高

self.tableView.sectionHeaderHeight = 50;

//进入编辑状态

self.tableView.editing = YES;

 
/设置头部和尾部的view,同一个view来设置头部和尾部时,默认只能显示头部的

UISwitch *swithBth = [[UISwitch alloc] init];

UISwitch *swithBth1 = [[UISwitch alloc] init];

self.tableView.tableHeaderView = swithBth;

self.tableView.tableFooterView = swithBth1;

 TableView方法
1. 刷新

全部或者局部reload,都是触发tableView:cellForRowAtIndexPath:方法,创建或重用cell,局部刷新cell时还可实现动画效果。而cell.textLabel.text是直接赋值,只是更新了页面上的label属性,不触发任何事件。

reload方法执行后会清空缓存池。
2. 滚动到指定位置
 方法一:滚动到指定的单元格

[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];

 //方法二:可滚动到tableView底部,scrollToRowAtIndexPath只能滚动到最后一个cell,

​​如果tableview包含tableFooterView则需要自己定位

[UIView animateWithDuration:0.5 animations:^{

CGFloat height = self.tableView.contentSize.height - self.tableView.frame.size.height;

[self.tableView setContentOffset:CGPointMake(0, height)];

}];

CeLL重用

Cell常用属性

/*设置backgroundView和selectedBackgroundView的背景颜色时不要直接设置cell.backgroundView.backgroundColor和cell.selectedBackgroundView.backgroundColor

应该创建ImageView后设置其backgroundColor再赋值*/

UIImageView *view = [[UIImageView alloc] init];

view.backgroundColor = [UIColor greenColor];

cell.backgroundView = view;

 UIImageView *view1 = [[UIImageView alloc] init];

view1.backgroundColor = [UIColor blueColor];

cell.selectedBackgroundView = view1;
/在设置了cell.backgroundView的背景颜色同时,也设置了cell.backgroundColor

//此时cell.textLabel.text = @"textLabel";

//如果在cell.backgroundColor = [UIColor redColor];后面,

//则label的背景颜色将会与cell.backgroundColor一致,如果在之前,
//则不会影响到label的背景颜色

cell.backgroundColor = [UIColor redColor];

cell.textLabel.text = @"textLabel";
//设置cell右侧按钮样式
cell.accessoryType = UITableViewCellAccessoryDetailButton;
//自定义cell右侧控件,但需要自己添加监听方法
cell.accessoryView = btn;
/设置cell的选中样式
self.selectionStyle = UITableViewCellSelectionStyleNone;
 1 自定义Cell与重用

NSString *ID = @"contact_cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

if (cell == nil) { //用户不会执行下面的语句

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:ID];

}

2. tableview中的静态cell被重用时,只与identifier的设置有关,与tableview 的Content无关,与cell的Style属性也无关。
3. 如果需要自定义cell,需要将style设置成Custom后,再自行拖拽控件
4. 自定义cell类时,需要自行创建一个UITableViewCell的子类,并设置cell的Class为这个子类,用这个子类来管理自定义的视图类,视图类通过Class关联了子类后,便可以进行连线管理了。

5 静态Cell

静态的Cell需要设置tableView的Content属性为Static Cells,然后再设置分组数量,再点击每个分组设置row

6我想把第一个cell显示的数据 向后缩进10个像素其他的cell不变怎么办呢

其实tableview已经给我提供了这样的函数

-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath

{

if (indexPath.row ==0) {

return10;

}

return
0;

}

iOS-UITableView的使用的更多相关文章

  1. IOS UITableView NSIndexPath属性讲解

    IOS UITableView NSIndexPath属性讲解   查看UITableView的帮助文档我们会注意到UITableView有两个Delegate分别为:dataSource和deleg ...

  2. iOS UITableView划动删除的实现

    标签:划动删除 iphone 滑动删除 ios UITableView 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rainb ...

  3. iOS UITableView Tips(2)

    #TableView Tips(2) (本来想一章就结束TableView Tips,但是发现自己还是太天真了~too young,too simple) ##架构上的优化 在Tips(1)中指出了一 ...

  4. iOS UITableView 与 UITableViewController

    很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名.项目地址. UITab ...

  5. iOS - UITableView中Cell重用机制导致Cell内容出错的解决办法

    "UITableView" iOS开发中重量级的控件之一;在日常开发中我们大多数会选择自定Cell来满足自己开发中的需求, 但是有些时候Cell也是可以不自定义的(比如某一个简单的 ...

  6. iOS UITableView 引起的崩溃问题

    其实 UITableView 应该是在iOS开发中使用最频繁的一个控件,一次同事之间聊天玩笑的说“一个页面,要是没使用UITableView,就好像称不上是一个页面”.虽然是个最常见的控件,但是他的强 ...

  7. IOS UITableView下拉刷新和上拉加载功能的实现

    在IOS开发中UITableView是非常常用的一个功能,而在使用UITableView的时候我们经常要用到下拉刷新和上拉加载的功能,今天花时间实现了简单的UITableView的下拉刷新和上拉加载功 ...

  8. iOS UITableView的分割线短15像素,移动到最左边的方法(iOS8)

    有好几个朋友问我ios 分割线端了一些 如何解决,于是我就写一篇博客吧.为什么我说是少了15像素呢?首先我们拖拽一个默认的tableview 控件! 看下xcode5 面板的inspector(检查器 ...

  9. iOS:UITableView 方法 属性

    参考:https://developer.apple.com/library/iOS/documentation/UIKit/Reference/UITableView_Class/Reference ...

  10. iOS UITableView左滑操作功能的实现(iOS8-11)

    WeTest 导读 本文主要是介绍下iOS 11系统及iOS 11之前的系统在实现左滑操作功能上的区别,及如何自定义左滑的标题颜色.字体大小. 一.左滑操作功能实现 1.如果左滑的时候只有一个操作按钮 ...

随机推荐

  1. 2019杭电多校第七场 HDU - 6656 Kejin Player——概率&&期望

    题意 总共有 $n$ 层楼,在第 $i$ 层花费 $a_i$ 的代价,有 $pi$ 的概率到 $i+1$ 层,否则到 $x_i$($x_i \leq 1$) 层.接下来有 $q$ 次询问,每次询问 $ ...

  2. sysobjects统计数据库的各类结构数据

    概要: 查询表.以及表中的行数 SELECT a.name,b.rows FROM sysobjects a INNER JOIN sysindexes b ON a.id=b.id WHERE a. ...

  3. 使用Costura.Fody插件将自己写的程序打包成一个可以独立运行的EXE文件

    我们在开发程序的时候会引用很多DLL文件,在程序完成编写后,如果不把这些引用的DLL打包,不能在其他电脑运行,那么很多同学可能在想了,能不能把我们编写好的程序打包成一个EXE文件,最好双击就能运行,当 ...

  4. java线程中yield(),sleep(),wait()区别详解

    1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据.注意该方 ...

  5. QT项目之创建.pri文件

    做大项目的时候,有很多.h和.cpp文件,会很繁琐.就需要.pri文件夹,将大项目分解成一个个的子项目,方便理清思绪和后期维护. 废话不多说,直接上过程! 第一步:新建一个项目.如图,选择choose ...

  6. Docker 安装ELK之 zz

    Docker 安装ELK之(2)   加新 2018-10-24 16:23:08 浏览2006 docker LOG js Image service   先安装Docker [root@jiaxi ...

  7. Maven项目打包时指定配置策略

    以数据库连接池的配置文件(db.properties)为例,一般的项目会有开发用数据库,测试用数据库,正式环境数据库三种配置. 以前的做法是拷贝成三份,注释掉其他了两份 # 开发用 jdbc.url ...

  8. try except else finally

    try..except..else没有捕获到异常,执行else语句 try..except..finally不管是否捕获到异常,都执行finally语句

  9. [游戏开发]imgui介绍

    创建窗口 ImGui::Begin("Hello, world!"); ImGui::End(); 其中, ImGui::Begin("Hello, world!&quo ...

  10. 安装openssh-server报Depends: openssh-client (= 1:6.6p1-2ubuntu2.8)错误

    SFTP称作“安全的FTP”,它使用ssh文件传输协议.所以我们需要安装openssh-server ubuntu自带的有openssh-client,所以可以通过 ssh username@host ...