【iOS7一些总结】9、与列表显示(在):列表显示UITableView

【iOS7一些总结】9、与列表显示(在):列表显示UITableView

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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

编译执行。显演示样例如以下图:

【iOS7一些总结】9、与列表显示(在):列表显示UITableView

表视图的协议方法——这是很重要的部分,由于我们创建一个表视图,目的就是让视图能够显示数据,否则一个空空的表视图与废物无二。表视图所定义的协议方法由代理方法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表示眼下正在创建的单元格位于整个表视图的第几行。
编译。执行,显示结果:

【iOS7一些总结】9、与列表显示(在):列表显示UITableView

假设希望实现对选中某个单元格的响应,仅仅须要实现以下代理方法就可以。在代理方法中能够实现创建新的视图控制器并控制其载入到屏幕上。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117085.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月11日 上午6:00
下一篇 2022年1月11日 上午7:00


相关推荐

  • 虚拟机怎么安装vmware tools

    虚拟机怎么安装vmware tools这篇文章主要为大家详细介绍了VMwareWorkstation12安装Ubuntu和VMwareTools教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下之前我通过百度经验上的过程来安装Ubuntu16,但是每次安装的时候没有什么问题,就是安装好了Tools,也设置好了共享文件夹,但是在路径:/mnt/hgfs下每次都找不到共享文件夹。后来我研究了好久,应该是安装的时候…

    2022年5月25日
    41
  • [Pulsar系列] 10分钟学会Pulsar消息系统概念

    [Pulsar系列] 10分钟学会Pulsar消息系统概念ApachePulsar 是一个支持多租户的 高性能的服务与服务之间消息通讯的解决方案 最初由雅虎开发 现在由 Apache 软件基金会管理 Pulsar 在 Yahoo 的生产环境运行了三年多 助力 Yahoo 的主要应用 如 YahooMail YahooFinance YahooSports Flickr Gemini 广告平台和 Yahoo 分布式键值存储系统 Sherpa Kafka 不够好 智联招聘基于 Pulsar 打造企业级事件中心 Pulsar 的主要特性如下 Pulsar 实例原生支持多集群

    2026年3月18日
    2
  • OpenClaw保姆级别安装教程,小白也可以养好自己的小龙虾

    OpenClaw保姆级别安装教程,小白也可以养好自己的小龙虾

    2026年3月14日
    2
  • Pycharm安装第三方库的三种方法

    Pycharm安装第三方库的三种方法Pycharm 安装第三方库的三种方法一 内部安装二 终端安装三 下载 wheel 文件安装一 内部安装在 Setting 中找到 PythonInterp 点击 号 输入需要安装的库 在 Specifyversi 中检查第三方库版本 可以选择定制版本 点击 InstallPacka 安装二 终端安装点击屏幕下方的 terminal 在输入框中输入 pipinstall 库名 点击回车 等待安装三 下载 wheel 文件安装搜索网址 https pypi org 在搜索框

    2026年3月27日
    1
  • 笔记:常见TCP端口号

    笔记:常见TCP端口号常见 tcp 端口号端口号 名称 注释 21 ftp 文件传输协议 FTP 端口 22 ssh 安全 Shell SSH 服务 23 telnet Telnet 服务 25 smtp 简单邮件传输协议 SMTP 37 time 时间协议 69 tftp 小文件传输协议 80 http 超文本传输协议 109 pop2 邮局协议版本 2110 pop3 邮局协议版本 3161 snmp 简单网络管

    2026年3月18日
    3
  • No way to disable datapump estimate?

    No way to disable datapump estimate?

    2021年8月8日
    75

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号