ios开发之简单的TableView
转载自:http://blog.csdn.net/lincyang/article/details/66473216
任务
一个最简单的TableView Demo,用以显示姓名,点击item,弹出一个姓名的提示。
相关概念
1、UITableView:继承自UIScrollView,与之相关有两个协议:UITableViewDelegate协议和UITableViewDataSource协议。
它可以被分为多个段,每个段包含单行或多行。
而其中的每一行被称为单元(UITableViewCell)。
2、协议:是类要实现的一系列方法等列表。
@protocol SomeProtocol
[ method declarations]
@end
- 1
- 2
- 3
3、数据源的两个关键方法
当表视图需要显示数据时,它需要先知道两件事:有多少行需要显示;每行要显示什么内容。
而这两个问题可以用数据源的两个方法来回答:
- (NSInteger)numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
- 1
- 2
4、委托协议的一个关键方法
当我们选中了一个单元,表视图会和它的委托通信,告知某一单元被选中(被点击),下面的方法会被调用。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {}
- 1
- 2
- 3
- 4
行动
1、新建一个项目,名称为SimpleTableView。
2、storyboard中加入一个表视图
在object library中搜索Table View并将其拖拽到主视图中。在attributes inspector中将prototype cells改为1
3、设置单元格的标识符
这个标识符设置的目的是让这个单元格(Cell)能够被重用。见上图,设为NameIdentifier。
4、可以编码了
1) ViewController.h 加入数据源和视图委托协议
@interface ViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>
- 1
- 2
2) ViewController.m 进行类的扩展,加入姓名数组
@interface ViewController () {NSArray* data;
}@end
- 1
- 2
- 3
- 4
- 5
- 6
3) 姓名数组初始化
- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.data = @[@"张飞",@"赵云",@"刘备",@"关羽",@"马操",@"孔明",@"魏延",@"姜维",@"刘禅"];
}
- 1
- 2
- 3
- 4
- 5
- 6
4) 实现两个数据源的核心方法
- (NSInteger)tableView:(UITableView *)tableViewnumberOfRowsInSection:(NSInteger)section {return data.count;
}- (UITableViewCell *)tableView:(UITableView *)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath {static NSString *CellIdentifier = @"NameIdentifier";UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:CellIdentifierforIndexPath:indexPath];NSString *name = data[indexPath.row];cell.textLabel.text = name;return cell;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
5) 实现视图委托的核心方法
选中一个item后,显示一个提示信息
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {// 声明一个UIAlertViewUIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"提示" message:data[indexPath.row] delegate:self cancelButtonTitle:nil otherButtonTitles:nil, nil];// 显示 UIAlertView[alert show];// 添加延迟时间为 1.0 秒 然后执行 dismiss: 方法[self performSelector:@selector(dismiss:) withObject:alert afterDelay:1.0];
}- (void)dismiss:(UIAlertView *)alert{// 此处即相当于点击了 cancel 按钮[alert dismissWithClickedButtonIndex:[alert cancelButtonIndex] animated:YES];
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
5、最后一件最重要的事
ViewControll中的数据源和视图委托两个协议要与表视图相关联起来,这里依然是一个拖拽操作(忍不住要吐槽)。
在storyboard中,右击Table View,然后将outlet中的datasource和dalegate拖拽到View Controll中。如下图。
运行到效果如下:
Demo下载地址
http://download.csdn.net/detail/lincyang/9794114
Tips
快速补全委托的方法
Xcode里貌似没有Java IDE里面那么方便,但是也不算特别麻烦。
输入“-”,按“Esc”键就可以弹出所有方法提示了,然后再输入你的关键字即可。
参考:
1、https://developer.apple.com/reference/uikit/uitableview
2、http://blog.csdn.net/Meryyn_Love/article/details/48345147
ios开发之简单的TableView相关推荐
- iOS开发:简单的Toast提示框实现
今天小年,再分享一篇2018年度最后一篇博客,博主是以iOS开发出身,那就最后一篇博文就分享一下关于iOS的内容吧.iOS开发过程中,有些时候操作App的时候,需要给用户对应的响应提示操作,使用系统自 ...
- iOS开发-------自定义简单的表情键盘(UICollectionView 集合视图)
最近制作自制表情键盘的时候,突然了解到还有一个叫做UICollectionView (集合视图)的类,就研究了一下,确实在做表情键盘上要比用 UIScrollView(滚动视图) 要简单的多,用法与 ...
- iOS开发storyboard拖拽tableView: Static cells的使用
从 object library 中,拖拽一个 UITableView 到 main.storyboard的 UIViewController 中: 设置 table view 的类型为: Sta ...
- iOS开发之简单画板实现
2019独角兽企业重金招聘Python工程师标准>>> 这几天在学习Quartz2D,学习了一个简单画板的实现,现在把实现过程记录一下. 主要用到的点就是画线,截屏,绘制图片,选择图 ...
- IOS开发工具介绍之Xcode开发工具使用
IT在线教育专家--麦子学院特约授课老师柯博文<iOS开发入门实战>向我们详细的讲述了ios开发实战过程.Xcode开发工具是ios开发的流程使用范围最广的工具. 在所有课程开始之前,柯博 ...
- iOS开发UI篇—简单介绍静态单元格的使用
iOS开发UI篇-简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...
- iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)
iOS开发UI篇-使用UItableview完成一个简单的QQ好友列表(一) 一.项目结构和plist文件 二.实现代码 1.说明: 主控制器直接继承UITableViewController // ...
- iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
iOS开发UI篇-使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 iOS开发UI篇-使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目 ...
- iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
iOS开发UI篇-使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: 1 //2 // YY ...
- IOS开发-TableView表视图基础
表视图在IOS中的应用非常广泛,常用于展示显示数据列表. 在工具组中包含了Table View 和Table View Cell 每个表示图都是UITableView的一个实例,每个可见行都是UITa ...
最新文章
- Proxy 动态代理 InvocationHandler CGLIB MD
- MySQL编译安装及主从配置
- WPF快速入门系列(8)——MVVM快速入门
- tensorflow 官方文档中文版 tensorflow教程 tensorflow教学
- vue a-sub-menu 添加点击事件报错_Vue+TS 使用的问题(持续更)
- 多媒体计算机在英语学科的应用,多媒体计算机应用于初中英语学科学习教学的研究...
- [hackinglab][CTF][基础关][2020] hackinglab 基础关 writeup
- 计算机视觉深度学习实战三:频域分析及其变换
- Java设计模式透析之 —— 适配器(Adapter)
- EL表达式+JSTL,forEach的两种用法
- setinterval 和 ajax,JavaScriptsetInterval和“this”解决方案
- 2012/7/25Extjs学习随笔
- 中国计算机设计大赛国二省一比赛总结——新冠病毒管理系统
- 环球电子公司将为新的Virgin TV 360平台提供语音遥控器
- WinDriver 驱动安装err e000024b,err e000022f解决办法
- [VCS] coverage hierachy exclude
- MySQL技术:InnoDB 存储引擎(不同版本的 Master Thread 工作方式)
- 实例分割:R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN
- linux 好书推荐
- 设计一个小型的物联网应用系统_点赞 | 面向能源物联网的智能传感芯片设计与应用...
热门文章
- win7设置网络共享(ICS共享)
- 隔空开车,华为云EI圆我“武侠梦”
- oracle报1405,【案例】Oracle报错ORA-15054 asm diskgroup无法mount的解决办法
- java 背单词系统_快速高效背单词系统方法论
- 论文阅读:LinkNet: Exploiting Encoder Representations forEfficient Semantic Segmentation
- 基于2D多边形的碰撞检测和响应
- 人脸对齐:Wing Loss人脸关键点检测算法2018
- 数据结构哈希表的基本操作(C语言)
- python3模拟登录_python3模拟登录有哪些情况
- 5月6阴阳师服务器维护,阴阳师正式服5月6日更新公告