UITableView的使用样例(简易向)
功能实现
- 构建一个UITableView,并使其默认显示a,b,c……..
- 构建一个按钮,点击后列表变为英文字母
- 构建一个按钮,点击后列表变为数字
基本概念
- 实现前头文件需要签订协议(如何签订向后看)UITableViewDateSource,UITableViewDelegate
- 实现UITableView必须实现的两个方法
返回:
UITableView中的section总行数
参数:
section:表示section下标
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
返回:
UITableView所有单元格(虽然在方法中是返回其中之一个单元格,但程序中它可以通过indexPath参数从0到最后循环运行下去)
参数:
indexPath:表示行的下标,可利用来读取数组的制定数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
实现过程
1.在storyboard拖拽一个UITableView,两个UIButton,然后做好相关的参数设置(签订协议不要忘了)。
实现:签订协议
@interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
@end
实现:定义变量
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITableView *tvTable;
@property (strong, nonatomic) NSMutableString * string;
@end
2.viewDidLoad方法的实现
实现:string的先初始化为英文字母的字符串
-(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.string = [[NSMutableString alloc]init];
for (int i = 0; i < 26; i ++) {
[self.string appendFormat:@"%c",'a'+i ];//字符串末尾加上一个字符
}
[self.tvTable setDataSource:self];
[self.tvTable setDelegate:self];
}
3.实现两个必须实现的方法
实现:
UITableView设定单元格个数为20个
将string字符串中的数据输入单元格
//返回单元格的数量
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 20;
}
//创建单元格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath
{
static NSString *identifier = @"myCell";
UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
cell.textLabel.text = [NSString stringWithFormat:@"%c",[self.string characterAtIndex:indexPath.row]];
return cell;
}
4.实现两个按键的action
- (IBAction)eventChange2Words:(UIButton *)sender {
self.string = [NSMutableString stringWithFormat:@""];
for (int i = 0; i < 26; i ++) {
[self.string appendFormat:@"%c",'a'+i ];
}
[self.tvTable reloadData];
}
- (IBAction)eventChange2Nums:(UIButton *)sender {
self.string = [NSMutableString stringWithFormat:@""];
for (int i = 0; i < 26; i ++) {
[self.string appendFormat:@"%c",'0'+(i%10) ];
}
[self.tvTable reloadData];
}
样例结果
图中显示的是显示字母的功能,显示数字的功能其实大同小异,请自行脑补
已知缺陷
- 如果string长度小于20时程序会崩溃,因为在 - (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath中访问时访问string字符串的下标从0到19
- 你们不觉得这好丑么。。。。。
推荐阅读
OS开发系列–UITableView全面解析
http://www.cnblogs.com/kenshincui/p/3931948.html#uiTableViewCell
UITableView的使用样例(简易向)的更多相关文章
- excel vlookup简易样例【原】
vlookup功能 vlookup主要用来做映射,就像java的map一样. 比如我要找id为2的学生对应的名字,那么在F7单元格录入=VLOOKUP(E7,$A$2:$B$4,2,FALSE) 实际 ...
- [hadoop系列]Pig的安装和简单演示样例
inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...
- 第一节:.Net版基于WebSocket的聊天室样例
一. 说在前面的话 该篇文章为实时通讯系列的第一节,基于WebSocket编写了一个简易版聊天样例,主要作用是为引出后面SignalR系列的用法及其强大方便之处,通过这个样例与后续的SignalR对比 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- 【阿菜做实践】利用go语言写一个简单的Pow样例
本篇博客的主要内容是用go写一个简单的Proof-of-Work共识机制,不涉及到网络通信环节,只是一个本地的简单demo.开发IDE用的是JB Golang. 整个项目的文件结构如下: PoWdem ...
- C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例
之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...
- MarkDown+LaTex 数学内容编辑样例收集
$\color{green}{MarkDown+LaTex 数学内容编辑样例收集}$ 1.大小标题的居中,大小,颜色 [例1] $\color{Blue}{一元二次方程根的分布}$ $\color{R ...
- 33个超级有用必须要收藏的PHP代码样例
作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的,即使你没用开发过大型软件项目,也一定多少了解它的语法. 在PHP的流行 ...
- 关于peersim样例配置文件的超详细解读(新手勿喷)
相信很多兄弟一开始接触peersim,对配置文件还是有点不适应,我看了好久的样例的配置文件,一层层去找对应的文件的方法,终于好像悟懂了一点,记下来以后回顾. 贴上代码,一点点分析. 首先要说下所谓的配 ...
- hdu 1003 MAX SUM 简单的dp,测试样例之间输出空行
测试样例之间输出空行,if(t>0) cout<<endl; 这样出最后一组测试样例之外,其它么每组测试样例之后都会输出一个空行. dp[i]表示以a[i]结尾的最大值,则:dp[i ...
随机推荐
- MSIL 静态类在 IL 定义上和非静态类的差别
本文来聊聊 MSIL 的基础知识,给一个 C# 的类标记了 static 之后和标记 static 之前,生成这个类的 IL 代码有什么不同 如以下的代码是一个默认的控制台程序 class Progr ...
- MSSQL—存储过程分页
SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[GetPagingStr] @PRESQL VARCHAR( ...
- 《Effective C++》第三版-3. 资源管理(Resource Management)
目录 条款13:以对象管理资源(Use objects to manage resources) 关键想法 智能指针 条款14:在资源管理类中小心copying行为(Think carefully a ...
- Oracle细粒度审计策略
场景:经常需要查看某些表做了哪些操作. Oracle中,可以添加细粒度策略来获取,如下: begin dbms_fga.add_policy(object_schema => 'portxx', ...
- Spring环境获取Spring的Bean
一.测试数据准备 /* Navicat Premium Data Transfer Source Server : swp-mysql Source Server Type : MySQL Sourc ...
- 7月 Splashtop上线了这些新功能 快来看鸭
经过我们的攻城狮天天努力,我们的软件又得到了升级和完善,上线了一些有用的新功能和增强功能,快来看看吧. Splashtop已为Splashtop Business Access,Splashtop远程 ...
- 密码学—Vigenere破解Python程序
文章目录 概要 预备知识点学习 整体流程 技术名词解释 技术细节 小结 代码 概要 破解Vigenere需要Kasiski测试法与重合指数法的理论基础 具体知识点细节看下面这两篇文章 预备知识点学习 ...
- python连接redis,mongodb以及简单命令使用
redis 环境如下: [root@mcw01 ~/msRedis]$ ps -ef|grep -v grep|grep redis root 46061 1 0 14:28 ? 00:00:45 r ...
- pod(三):pod的管理
目录 一.系统环境 二.前言 三.pod的管理 3.1 环境介绍 3.2 管理pod 一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.17 ...
- P1746 离开中山路
传送锚点:https://www.luogu.com.cn/problem/P1746 题目背景 <爱与愁的故事第三弹·shopping>最终章. 题目描述 爱与愁大神买完东西后,打算坐车 ...