转载自: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相关推荐

  1. iOS开发:简单的Toast提示框实现

    今天小年,再分享一篇2018年度最后一篇博客,博主是以iOS开发出身,那就最后一篇博文就分享一下关于iOS的内容吧.iOS开发过程中,有些时候操作App的时候,需要给用户对应的响应提示操作,使用系统自 ...

  2. iOS开发-------自定义简单的表情键盘(UICollectionView 集合视图)

    最近制作自制表情键盘的时候,突然了解到还有一个叫做UICollectionView (集合视图)的类,就研究了一下,确实在做表情键盘上要比用 UIScrollView(滚动视图) 要简单的多,用法与 ...

  3. iOS开发storyboard拖拽tableView: Static cells的使用

    从 object library 中,拖拽一个 UITableView 到 main.storyboard的 UIViewController 中: 设置  table view 的类型为:  Sta ...

  4. iOS开发之简单画板实现

    2019独角兽企业重金招聘Python工程师标准>>> 这几天在学习Quartz2D,学习了一个简单画板的实现,现在把实现过程记录一下. 主要用到的点就是画线,截屏,绘制图片,选择图 ...

  5. IOS开发工具介绍之Xcode开发工具使用

    IT在线教育专家--麦子学院特约授课老师柯博文<iOS开发入门实战>向我们详细的讲述了ios开发实战过程.Xcode开发工具是ios开发的流程使用范围最广的工具. 在所有课程开始之前,柯博 ...

  6. iOS开发UI篇—简单介绍静态单元格的使用

    iOS开发UI篇-简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...

  7. iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)

    iOS开发UI篇-使用UItableview完成一个简单的QQ好友列表(一) 一.项目结构和plist文件 二.实现代码 1.说明: 主控制器直接继承UITableViewController // ...

  8. iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局

    iOS开发UI篇-使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 iOS开发UI篇-使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目 ...

  9. iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序

    iOS开发UI篇-使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: 1 //2 // YY ...

  10. IOS开发-TableView表视图基础

    表视图在IOS中的应用非常广泛,常用于展示显示数据列表. 在工具组中包含了Table View 和Table View Cell 每个表示图都是UITableView的一个实例,每个可见行都是UITa ...

最新文章

  1. Proxy 动态代理 InvocationHandler CGLIB MD
  2. MySQL编译安装及主从配置
  3. WPF快速入门系列(8)——MVVM快速入门
  4. tensorflow 官方文档中文版 tensorflow教程 tensorflow教学
  5. vue a-sub-menu 添加点击事件报错_Vue+TS 使用的问题(持续更)
  6. 多媒体计算机在英语学科的应用,多媒体计算机应用于初中英语学科学习教学的研究...
  7. [hackinglab][CTF][基础关][2020] hackinglab 基础关 writeup
  8. 计算机视觉深度学习实战三:频域分析及其变换
  9. Java设计模式透析之 —— 适配器(Adapter)
  10. EL表达式+JSTL,forEach的两种用法
  11. setinterval 和 ajax,JavaScriptsetInterval和“this”解决方案
  12. 2012/7/25Extjs学习随笔
  13. 中国计算机设计大赛国二省一比赛总结——新冠病毒管理系统
  14. 环球电子公司将为新的Virgin TV 360平台提供语音遥控器
  15. WinDriver 驱动安装err e000024b,err e000022f解决办法
  16. [VCS] coverage hierachy exclude
  17. MySQL技术:InnoDB 存储引擎(不同版本的 Master Thread 工作方式)
  18. 实例分割:R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN
  19. linux 好书推荐
  20. 设计一个小型的物联网应用系统_点赞 | 面向能源物联网的智能传感芯片设计与应用...

热门文章

  1. win7设置网络共享(ICS共享)
  2. 隔空开车,华为云EI圆我“武侠梦”
  3. oracle报1405,【案例】Oracle报错ORA-15054 asm diskgroup无法mount的解决办法
  4. java 背单词系统_快速高效背单词系统方法论
  5. 论文阅读:LinkNet: Exploiting Encoder Representations forEfficient Semantic Segmentation
  6. 基于2D多边形的碰撞检测和响应
  7. 人脸对齐:Wing Loss人脸关键点检测算法2018
  8. 数据结构哈希表的基本操作(C语言)
  9. python3模拟登录_python3模拟登录有哪些情况
  10. 5月6阴阳师服务器维护,阴阳师正式服5月6日更新公告