12-26 tableView的学习心得
一:基础部分
UITableView的两种样式:

注意是只读的
1.UITableViewStytlePlain(不分组的)
n
2.UITableViewStyleGrouped(分组的)

二:如何展示数据
1.
(1)UITableView需要一个数据源(dataSource)来显示数据;

需要注意dataSource是UITableView的一个属性,类型是id(任意形),但是需要遵守<UITableViewDataSource>协议!
(2)UITableView会向数据源查询一共多少行数据以及每一行显示什么数据等;
(3)没有设置数据源的UITableView只是一个空壳;
(4)凡是遵守UITableViewDataSource协议的OC对象,都可以是UITableView的数据源;
UITableViewDataSource协议代码:
有这样两个必须实现的方法
@required
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
//每一行有多少组(section)数据
// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
//每一行显示什么内容
还有一个常用的optional的方法
@optional
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; // Default is 1 if not implemented
//这个表示共计多少组数据
三:代码设置UITableView
//
// ViewController.m
// tableView
//
// Created by Mac on 15/12/26.
// Copyright © 2015年 Mac. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()<UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 1.设置tableView的数据源,也就是ViewController自己,它自己也是个OC对象且遵守UITableViewDataSource协议!
self.tableView.dataSource = self;
}
- (BOOL)prefersStatusBarHidden{
return YES;
}
#pragma mark - tableView的数据源方法
//1.设置每一组有多少行数据
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 0) {
return 2;
}else{
return 3;
}
}
//2.设置总计多少组
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
//3.设置每一行的内容
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
//其中,indexPath表示索引
//如:indexPath.row表示某一行,index.section表示某一组
{
UITableViewCell *cell = [[UITableViewCell alloc]init];
// 将第一组第一行的cell的内容设置为红色的“征里”;
if (indexPath.section == 0) {
if (indexPath.row == 0) {
cell.textLabel.text = @"征里";
cell.textLabel.textColor = [UIColor redColor];
return cell;
}else{
cell.textLabel.text = @"征里";
return cell;
}
}else {
cell.textLabel.text = @"征里";
return cell;
}
}
//4.设置每组脚与头显示
- (nullable NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return @"第一组的征里!";
}else{
return @"第二组的征里!";
}
}
- (nullable NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
if (section == 0) {
return @"第一组的征里 @@@";
}else{
return @"第二组的征里 @@@";
}
}
@end
效果如下
12-26 tableView的学习心得的更多相关文章
- python学习心得第四章
python 学习心得第四章 1.lambda表达式 1:什么是lambda表达式 为了简化简单函数的代码,选择使用lambda表达式 上面两个函数的表达式虽然不一样,但是本质是一样的,并且lamb ...
- windows类书的学习心得(转载)
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- 别人的的MYSQL学习心得(十五) 日志
我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 我的MYSQL学习心得 mysql日志
这一篇<我的MYSQL学习心得(十五)>将会讲解MYSQL的日志 MYSQL里的日志主要分为4类,使用这些日志文件,可以查看MYSQL内部发生的事情. 分别是 1.错误日志:记录mysql ...
- 我的MYSQL学习心得(八)
原文:我的MYSQL学习心得(八) 我的MYSQL学习心得(八) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...
- linux学习心得之目录树开端与/etc(图文)
linux学习心得之目录树开端与/etc(图文) linux中“一切皆文件”,学习linux一年了,在学习过程中对目录树的一点心得,分享给大家,有不对的地方敬请斧正. 不多说了,先上图: 根目录: / ...
- windows类书的学习心得
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- 20145335郝昊 Java学习心得 密码学代码复写
20145335郝昊 Java学习心得 密码学代码复写 本学期我们学习了现代密码学这门课程,在上课的时候接触到了很多种类型的密码体制,对于一些典型很通用的密码体制有自己的学习和设计.不论是从密码体制还 ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
随机推荐
- [转载]SoapUI 参数化&数据库连接
引用自 : http://www.cnblogs.com/liulinghua90/p/4954045.html 如果是没有代码能力的小白,要利用工具进行接口测试的时候,经常会遇到接口地址 或者接口参 ...
- struts2 拦截器的注册在strut.xml中
根据需要:需要在struts.xml中注册拦截器为以下内容 根据自己的业务需要更改参数 <!DOCTYPE struts PUBLIC "-//Apache Software Fou ...
- 小米域名过渡JS
<script>jQuery(function($) { (function() { var $bnBar = $(''), $topBn = $('#J_topBn'), $topBnB ...
- 2016年31款轻量高效的开源JavaScript插件和库
目前有很多网站设计师和开发者喜欢使用由JavaScript开发的插件和库,但同时面临一个苦恼的问题:它们中的大多数实在是太累赘而且常常降低网站的性能.其实,其中也有不少轻量级的插件和库,它们不仅轻巧有 ...
- SpringMVC整合Quartz实现定时任务以及Tomcat服务执行初始化定时任务
1.导入quartz.jar包,或者pom.xml 配置对应的依赖: <dependency> <groupId>org.quartz-scheduler</groupI ...
- 使用 Fresco加载图片
概念: ImagePipeline ——负责从网络.本地图片.Content Provider(内容提供者)或者本地资源那里获取图片,压缩保存在本地存储中和在内存中保存为压缩的图片 Drawee——处 ...
- TortoiseGit GitHub 使用指南
TortoiseGit GitHub 使用指南 这个文档讲的还是比较清楚和完整的.需要注意的一点是ssh的方式,取gitHub的URL的时候选取ssh方式. http://www.360doc.co ...
- BZOJ4033 [HAOI2015]T1
令$f[p][i]$表示以$p$为根的子树内,选了$i$个黑点,剩下的都是白点的这个子树内贡献的答案 如果$p$的子树都算出来了,只要计算$p$与$fa[p]$之间的边对答案的贡献就好了,贡献是$di ...
- 执行MAVEN更新包
我们一般使用 mvn eclipse:eclipse 执行对maven库的引用,这样会修改项目下的classpath文件. 我们修改直接在eclipse 使用maven库作为项目的引用. 步骤如下: ...
- 使用HttpClient访问被保护资源
下面的Android应用需要向指定页面发送请求,但该页面并不是一个简单的页面,只有当用户已经登录,而且登录用户的用户名是crazyit.org时才可访问该页面.如果使用HTTPURLConnectio ...