任务

一个最简单的TableView Demo,用以显示姓名,点击item,弹出一个姓名的提示。

相关概念

1、UITableView:继承自UIScrollView,与之相关有两个协议:UITableViewDelegate协议和UITableViewDataSource协议。
它可以被分为多个,每个段包含单行或多行。
而其中的每一行被称为单元(UITableViewCell)。

2、协议:是类要实现的一系列方法等列表。

@protocol SomeProtocol
[ method declarations]
@end

3、数据源的两个关键方法
当表视图需要显示数据时,它需要先知道两件事:有多少行需要显示;每行要显示什么内容。
而这两个问题可以用数据源的两个方法来回答:

- (NSInteger)numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

4、委托协议的一个关键方法
当我们选中了一个单元,表视图会和它的委托通信,告知某一单元被选中(被点击),下面的方法会被调用。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {}

行动

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>

2) ViewController.m 进行类的扩展,加入姓名数组


@interface ViewController () {NSArray* data;
}@end

3) 姓名数组初始化

- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.data = @[@"张飞",@"赵云",@"刘备",@"关羽",@"马操",@"孔明",@"魏延",@"姜维",@"刘禅"];
}

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;
}

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];
}

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菜鸟笔记4:一个简单的TableView相关推荐

  1. Flutter学习笔记 —— 完成一个简单的新闻展示页

    Flutter学习笔记 -- 完成一个简单的新闻展示页 前言 思路分析 案例代码 结束语 上图 前言 刚学Flutter不久,今天我们来看看如何使用 Container & ListView实 ...

  2. golang游戏开发学习笔记-开发一个简单的2D游戏(基础篇)

    此文写在golang游戏开发学习笔记-创建一个能自由探索的3D世界之后,感兴趣可以先去那篇文章了解一些基础知识,在这篇文章里我们要创建一个简单的2D游戏场景以及配套的人物,并实现人物运动和碰撞检测功能 ...

  3. UNIX网络编程笔记(2):一个简单的时间获取程序

    这一讲通过一个简单的时间获取程序简单介绍套接字编程. 1.套接字API 1.1.套接字地址结构 上一讲中介绍了TCP的一些内容,知道了一个套接字对唯一标识了网络中的一个TCP连接,而一个套接字标识了一 ...

  4. 网络爬虫笔记 :一个简单的爬虫框架

    学了两节课的 Python 爬虫,也算是入门了吧.敲了两天的案例代码之后,我突然发现,这些代码虽然功能不同,写法各异,但是终归是有章可循的,整体框架是一致的.所以我自己整理了一个简单的爬虫框架,适合初 ...

  5. IOS开发笔记1-写一个hello world!程序

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53227222 本文出自:[顾林海的博客] 序言 从今天开始正式踏上io ...

  6. how tomcat works 读书笔记(一)----------一个简单的webserver

    http协议 若是两个人能正常的说话交流,那么他们间必然有一套统一的语言规则<在网络上server与client能交流也依赖与一套规则,它就是我们说的http规则(超文本传输协议Hypertex ...

  7. python网页爬虫菜鸟教程_python菜鸟 想做一个简单的爬虫 求教程

    贴一个爬虫给你: 因为要做观点,观点的屋子类似于知乎的话题,所以得想办法把他给爬下来,搞了半天最终还是妥妥的搞定了,代码是python写的,不懂得麻烦自学哈!懂得直接看代码,绝对可用 #coding: ...

  8. Windows程序设计学习笔记(1):一个简单的windows程序

    <Windows程序设计>(第五版)(美Charles Petzold著) 1 #include<windows.h> 2 3 LRESULT CALLBACK WndProc ...

  9. uni-app学习笔记-实现一个简单统计图(三)

    根据原型需要,先来写一个统计图,其实和vue实现一个统计图的方法是一样的.axios请求Echarts折线图 https://www.jianshu.com/p/9f872bee0e6a 1:在HBu ...

  10. 学习笔记:latex.一个简单的个人实验报告模板及部分语法说明

    首先建立一个  my_report.cls  的配置文件.(以后可能会随着使用进行一些修改和补充) \ProvidesClass{my_report}%------------------------ ...

最新文章

  1. 对于插入和删除数据越频繁的操作 ,单链表较顺序存储结构效率越有优势
  2. docker+open vswitch多宿主间容器互连构建tomcat服务
  3. [转载]vs2008下安装boost
  4. 学成在线--0.项目概述
  5. 21个演示展示强大的jQuery特效
  6. Java:JDBC(Mysql)
  7. AtCoder Regular Contest 071
  8. 图像大小批量调整工具Image Resizer for Mac
  9. 三 APPIUM Android自动化 测试初体验(转)
  10. 利用PowerShell复制SQLServer账户的所有权限
  11. Android底层开发实战PDF
  12. guide, manual, tutorial之间的区别
  13. ios用xib实现三等分以及多等分思路
  14. edm html超链接,EDM邮件中的html/css兼容性问题
  15. hive中reduce类函数说明
  16. 代码随想录第七天 LeetCode 454、383、15、18 (哈希表、双指针)
  17. js破解 X笔网登录
  18. ROX-Filer 2.6
  19. 飞腾CPU服务器系统安装问题
  20. 2.Maven创建以及依赖、继承、聚合

热门文章

  1. python编程从入门到实践——16章
  2. 台式机通过网线共享笔记本电脑无线网络
  3. Java定义获取所有偶数元素集合的方法
  4. QT学习教程(全面)
  5. PostgreSQL 13新特性:fetch first with ties
  6. sql server 使用 top WITH TIES
  7. [附源码]PHP计算机毕业设计老薛男生服装网(程序+LW)
  8. 强烈推荐:C#编码规范手册
  9. 风扇空调照明灯动画的创建
  10. 详细不啰嗦,电脑重装系统win10教程分享