列表显示,顾名思义它是在一个列表视图的形式显示在屏幕上的数据的内容。于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相关推荐

  1. 大话企业级android读书笔记(一)

    Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备.目前尚未有统一中文名称,中国大陆地区较多人使用安卓(非官方)或安致(官方).Android操作系统最初由Andy Rubi ...

  2. 中国大学生计算机设计大赛二等奖

    前言 效果图如下: 1.首页(宫格式展示) 2.首页(列表式展示) 3.发布动态 4.查看动态 5.评论 6.发布物品 7.浏览物品 8.我的 9.我的发布 10.我的动态 11.联系客服 12.修改 ...

  3. C语言学习——班级同学教材金额列表打印

    C语言学习--班级同学教材金额列表打印 今天学习了二维数组,恰逢班内要进行教材费用清算,所以编学了一个C语言程序来对班上各同学应该缴纳的教材费用进行计算并列表输出. 首先程序所实现的功能为:由用户输入 ...

  4. 首页列表显示全部问答,完成问答详情页布局。

    首页列表显示全部问答: 将数据库查询结果传递到前端页面 Question.query.all() 前端页面循环显示整个列表. 问答排序 PY文件: @app.route('/') def index( ...

  5. Android开发之Dialog的三种列表显示(解读谷歌官方API)

    根据谷歌的官方文档呢,我们可以有三种列表显示的关于ALertDialog api的可用:.(1)传统的单一选择列表(2)一个持久的单一选择列表(单选按钮) (3)一个持久的多项选择列表(复选框) .创 ...

  6. 浮动5-常用列表显示(案例)

    <!doctype html> <html> <head><meta http-equiv="content-type" content= ...

  7. dedemodule.class.php,DEDECMS5.7模块/模块管理列表显示空白问题解决方法

    DEDECMS5.7模块/模块管理列表显示空白(站长基地配图) 今天站长基地升级至dedecms最新版本,进入后台意外的发现,模块/模块管理一片空白,但有没有及时备份,于是赶紧去网上找寻解决办法,经过 ...

  8. 首页列表显示全部问答,完成问答详情页布局

    首页列表显示全部问答: 将数据库查询结果传递到前端页面 Question.query.all() 前端页面循环显示整个列表. 问答排序 完成问答详情页布局: 包含问答的全部信息 评论区 以往评论列表显 ...

  9. Titanium 列表显示TableView

    效果: Titanium中列表显示需要创建TableView var tableView = Ti.UI.createTableView({style: Ti.UI.iPhone.TableViewC ...

最新文章

  1. SQL中的case when then else end用法
  2. apply plugin: 'idea' --- gradle idea
  3. asterisk 配置 mysql_Asterisk的配置详解
  4. android运行过程简书,android 启动过程(一)
  5. jakarta ee_MicroProfile在Jakarta EE时代的作用
  6. 津津的储蓄计划(信息学奥赛一本通-T1074)
  7. 【jupyter notebook】低版本 python 安装jupyter及其问题解决
  8. Rust 让人奔溃的那些特性!
  9. 某些数组和字符串类型转换(转)
  10. Java下一代高并发技术——虚拟线程“JEP 425: Virtual Threads (Preview)”
  11. 极限学习机ELM原理与实现
  12. 信息安全等级保护 实施方案
  13. CTPN算法简单解析
  14. 软考(网络工程师)-必备网络知识(笔记二)
  15. 三分钟告诉你什么是三层交换机!
  16. 如何给阿里云建站添加网站域名解析???
  17. day18-正则表达式
  18. 大数据量(例如几十万或者几百万的量)怎么导入到excel中
  19. Linux——孤儿进程|进程的优先级 用top命令去修改优先级 其他概念 环境变量 PATH 获取环境变量
  20. pytorch(9)-- 利用resnet18使cifa10数据集达到95%准确率

热门文章

  1. leetcode261. 以图判树
  2. leetcode167. 两数之和 II - 并没有那么easy的easy题
  3. C++(STL):07---vector之使用方式和常规用法
  4. Linux(15)-C/C++、PHP、JAVA概述
  5. 常用的Homebrew的命令的使用
  6. 王道考研 计算机网络2 标准化工作
  7. C语言指针-字符指针整型指针char*s int*a
  8. C++回调函数(callback)的使用
  9. 企业使用开源软件的风险
  10. 解决:Dockerfile 中执行 tar 命令始终报错:tar: /xx/xx: Cannot stat: No such file or directory tar: Exiting with