【iOS7一些总结】9、与列表显示(在):列表显示UITableView
列表显示,顾名思义它是在一个列表视图的形式显示在屏幕上的数据的内容。于ios在列表视图UITableView达到。这个类在实际应用中频繁,是很easy理解。这里将UITableView的主要使用方法总结一下以备查。
UITableView定义在头文件UITableView.h中,详细的定义能够查看官方文档;从定义中能够看出,UITableView继承自UIScrollView类,因此在支持方便地显示列表数据的同一时候,还天生支持垂直滚动操作。
组成列表的每个元素称为UITableViewCell实例。
一个UITableViewCell也是应用很广泛的类,定义可见官方文档。
在详细的使用过程中,能够创建一个独立的UITableView,也能够直接创建一个UITableViewController。这里主要记录创建UITableView的方法,下篇记录通过列表视图控制器使用UITableView。
UITableView类中定义了style属性:
@property(nonatomic, readonly) UITableViewStyle style
每个UITableView都能够选择两种style之中的一个。即分组模式和平面模式。这两种模式定义在枚举变量UITableViewStyle中:
typedef enum {UITableViewStylePlain,UITableViewStyleGrouped
} UITableViewStyle;
每个列表视图的组成都是相似的,都是由一个表头视图+表体+表尾视图构成。当中表头和表尾两个视图默觉得nil。须要时能够创建自己定义视图加入到表头和表尾。定义例如以下:
@property(nonatomic, retain) UIView *tableHeaderView;
@property(nonatomic, retain) UIView *tableFooterView;
除表头和表尾之外,表体则由一串UITableViewCell(以下简称cell)构成。假设是分组表视图。则多个UITableViewCell构成一个section,每一个section也有头和尾视图。
以下简单新建一个demo展示一下怎样创建一个UITableView。
这里假定大家都了解xcode的基本操作,所以就不再一步一步地截图了,简单叙述就可以。不懂得能够去百度一下“xcode新建project”。
新建一个single view application。在新生成的ViewController.m文件里重写loadView方法,新建一个UITableView视图。
(别忘了把alloc的视图在dealloc函数中释放。)
- (void)loadView
{CGFloat width = [UIScreen mainScreen].bounds.size.width;CGFloat height = [UIScreen mainScreen].bounds.size.height;UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width,height)];self.view = backgroundView;_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, width, height) style:UITableViewStylePlain];[self.view addSubview:_tableView];[_tableView release];
}
编译执行。显演示样例如以下图:
表视图的协议方法——这是很重要的部分,由于我们创建一个表视图,目的就是让视图能够显示数据,否则一个空空的表视图与废物无二。表视图所定义的协议方法由代理方法delegate和数据源方法data source方法组成。
托付方法一般用于实现个性化处理表视图的基本样式(如单元格的高度等)以及捕捉单元格选中的响应。数据源方法用于完毕表中的数据。如指定单元格数。以及创建每个单元格。
要实现代理和数据源方法。首先须要让当前视图控制器支持UITableViewDelegate和UITableViewDataSource协议。做例如以下改动:
@interface ViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>
而且在tableView创建完毕后,将tableView的delegate和dataSource设置为self,即托付给当前视图控制器来控制表视图的数据显示和响应。
_tableView.delegate = self;
_tableView.dataSource = self;
delegate和data source协议有两个方法是必须实现的:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
这两个方法分别用于生成每个cell。以及指定当前section共同拥有多少行。
实现这两个方法是想要在表视图中显示数据必须实现的最低要求。
我们在视图控制器头文件里声明一个NSArray *model(retain属性),并在viewDidLoad中将[UIFont familyNames]赋给这个属性。
在视图控制器中实现这两个代理方法:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{return [_model count];
}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{static NSString *identify = @"TableViewCell";UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identify];if (nil == cell){cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identify];cell.textLabel.text = self.model[indexPath.row];}return cell;
}
在cellForRowAtIndexPath方法中,首先会检查是否有闲置的单元格,假设没有闲置的单元格。则会新建一个cell并将其返回。參数indexPath表示眼下正在创建的单元格位于整个表视图的第几行。
编译。执行,显示结果:
假设希望实现对选中某个单元格的响应,仅仅须要实现以下代理方法就可以。在代理方法中能够实现创建新的视图控制器并控制其载入到屏幕上。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
版权声明:本文博主原创文章,博客,未经同意不得转载。
【iOS7一些总结】9、与列表显示(在):列表显示UITableView相关推荐
- 大话企业级android读书笔记(一)
Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备.目前尚未有统一中文名称,中国大陆地区较多人使用安卓(非官方)或安致(官方).Android操作系统最初由Andy Rubi ...
- 中国大学生计算机设计大赛二等奖
前言 效果图如下: 1.首页(宫格式展示) 2.首页(列表式展示) 3.发布动态 4.查看动态 5.评论 6.发布物品 7.浏览物品 8.我的 9.我的发布 10.我的动态 11.联系客服 12.修改 ...
- C语言学习——班级同学教材金额列表打印
C语言学习--班级同学教材金额列表打印 今天学习了二维数组,恰逢班内要进行教材费用清算,所以编学了一个C语言程序来对班上各同学应该缴纳的教材费用进行计算并列表输出. 首先程序所实现的功能为:由用户输入 ...
- 首页列表显示全部问答,完成问答详情页布局。
首页列表显示全部问答: 将数据库查询结果传递到前端页面 Question.query.all() 前端页面循环显示整个列表. 问答排序 PY文件: @app.route('/') def index( ...
- Android开发之Dialog的三种列表显示(解读谷歌官方API)
根据谷歌的官方文档呢,我们可以有三种列表显示的关于ALertDialog api的可用:.(1)传统的单一选择列表(2)一个持久的单一选择列表(单选按钮) (3)一个持久的多项选择列表(复选框) .创 ...
- 浮动5-常用列表显示(案例)
<!doctype html> <html> <head><meta http-equiv="content-type" content= ...
- dedemodule.class.php,DEDECMS5.7模块/模块管理列表显示空白问题解决方法
DEDECMS5.7模块/模块管理列表显示空白(站长基地配图) 今天站长基地升级至dedecms最新版本,进入后台意外的发现,模块/模块管理一片空白,但有没有及时备份,于是赶紧去网上找寻解决办法,经过 ...
- 首页列表显示全部问答,完成问答详情页布局
首页列表显示全部问答: 将数据库查询结果传递到前端页面 Question.query.all() 前端页面循环显示整个列表. 问答排序 完成问答详情页布局: 包含问答的全部信息 评论区 以往评论列表显 ...
- Titanium 列表显示TableView
效果: Titanium中列表显示需要创建TableView var tableView = Ti.UI.createTableView({style: Ti.UI.iPhone.TableViewC ...
最新文章
- SQL中的case when then else end用法
- apply plugin: 'idea' --- gradle idea
- asterisk 配置 mysql_Asterisk的配置详解
- android运行过程简书,android 启动过程(一)
- jakarta ee_MicroProfile在Jakarta EE时代的作用
- 津津的储蓄计划(信息学奥赛一本通-T1074)
- 【jupyter notebook】低版本 python 安装jupyter及其问题解决
- Rust 让人奔溃的那些特性!
- 某些数组和字符串类型转换(转)
- Java下一代高并发技术——虚拟线程“JEP 425: Virtual Threads (Preview)”
- 极限学习机ELM原理与实现
- 信息安全等级保护 实施方案
- CTPN算法简单解析
- 软考(网络工程师)-必备网络知识(笔记二)
- 三分钟告诉你什么是三层交换机!
- 如何给阿里云建站添加网站域名解析???
- day18-正则表达式
- 大数据量(例如几十万或者几百万的量)怎么导入到excel中
- Linux——孤儿进程|进程的优先级 用top命令去修改优先级 其他概念 环境变量 PATH 获取环境变量
- pytorch(9)-- 利用resnet18使cifa10数据集达到95%准确率
热门文章
- leetcode261. 以图判树
- leetcode167. 两数之和 II - 并没有那么easy的easy题
- C++(STL):07---vector之使用方式和常规用法
- Linux(15)-C/C++、PHP、JAVA概述
- 常用的Homebrew的命令的使用
- 王道考研 计算机网络2 标准化工作
- C语言指针-字符指针整型指针char*s int*a
- C++回调函数(callback)的使用
- 企业使用开源软件的风险
- 解决:Dockerfile 中执行 tar 命令始终报错:tar: /xx/xx: Cannot stat: No such file or directory tar: Exiting with