IOS第五课——Gesture and TableView
这一次我们要学习Gesture、TableView、AlertView三种技术。
一、Gesture
在iOS中,可以使用系统内置的手势识别(GestureRecognizer),也可以创建自己的手势。
GestureRecognizer将低级别的转换到高级别的执行行为,然后绑定到view的对象,所以当发生手势时,绑定到的view对象会响应,它确定这个动作是否对应一个特定的手势(swipe,pinch,pan,rotation)
如果它能识别手势,那么就会向绑定它的view发送消息。
UIKit框架提供了预定义的GestureRecognizer:UITapGestureRecognizer、UIPanGestureRecognizer、UIPinchGestureRecognizer、UISwipeGestureRecognizer、UIRotationGestureRecognizer、UILongPressGestureRecognizer。
添加手势只需三步:
- 建立手势识别器(如 UITapGestureRecognizer)实例,在其 addTarget 方法中设置 target(一般就是 self)、action 方法,指定一些属性,如识别器实例的 isUserInteractionEnable = true
- 附加识别器到视图:*View.addGestureRecognizer(识别器实例)
- 实现 action指定的方法
完整代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var tapView: UIView!
var lastRotation = CGFloat()
let tapRec = UITapGestureRecognizer()
override func viewDidLoad() {
super.viewDidLoad()
tapRec.addTarget(self, action: #selector(ViewController.tappedView))
tapView.addGestureRecognizer(tapRec)
tapView.isUserInteractionEnabled = true
}
func tappedView()
{
print("hello")
}
}

二、UITableView
Table是最常用的展示数据的一种UI控件。资料展示风格:列表风格Plain,分块风格Grouped。
TableView实现步骤:
- 添加UITableView及Prototype Cells。
- 需要某一个类遵循UITableViewDelegate、UITableViewDataSource协议(并在后面实现三个特定的方法),然后对TableView设置代理,设置为刚才的类:tableView.delegate = self(或者其他类名)、tableView.dataSource = self。
- 设置TableViewCell的Identifier(只要唯一就行)
- 初始化数据
- 实现UITableViewDataSource协议的三个特定的、必须的方法,在这三个方法中实现数据显示:设置section数量、单个section内的行的数量、显示单元格数据。
下面是TableView的一个实例:

import UIKit
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
var myName = [String]()
@IBOutlet weak var txtName: UITextField!
@IBOutlet weak var tvwNames: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tvwNames.delegate = self //第2步
tvwNames.dataSource = self
myName.append("aa") //最初的默认值
}
@IBAction func btn_Add(_ sender: UIButton) {
if let name = txtName.text {
myName.append(name)
tvwNames.reloadData()
}
}
@IBAction func btn_Save(_ sender: UIButton) {
}
@IBAction func btn_Read(_ sender: UIButton) {
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
//单个section内的行的数量
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myName.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellIdentifier = "MyName"
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) //第4步设置数据
cell.textLabel?.text = myName[indexPath.row] //设置初始数据
return cell //返回数据
}
}
TableView还可以自定义表格:制定每一行(cell)的显示模板。
Alert ActionView:
iOS有两种弹框提示:Alert(屏幕弹出提示)、ActionSheet(底部弹出菜单)。
先放一个button,然后右键button拖一个@IBAction方法,然后。。。
完整代码:
@IBAction func btnExit(sender: UIButton) {
let alertController = UIAlertController(title: "标题", message: "这是我要显示的内容", preferredStyle: .Alert) //表示是弹框Alert,也可以是ActionSheet
let okAction = UIAlertAction(title: "好的", style: .Default, handler: {
action in
print("hello")
// exit(0)
})
let cancelAction = UIAlertAction(title: "取消", style: .Cancel, handler: nil) //可以用.Destructive表示警告:文字颜色变红
alertController.addAction(cancelAction)
alertController.addAction(okAction)
self.presentViewController(alertController, animated: true, completion: nil)
//有些是self.present(alertController, animated: true, completion: nil),总之就是打出一个模式框
}
第二次考试完整代码:files.cnblogs.com/files/quanxi/2014110231.zip
files.cnblogs.com/files/quanxi/最新.zip
IOS第五课——Gesture and TableView的更多相关文章
- 斯坦福IOS开发第五课(第一部分)
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27706991 作者:小马 因为第五课的内容比較多.分两部分来写. 一 屏幕旋转基本 ...
- 【Web探索之旅】第二部分第五课:响应式网站和移动应用
内容简介 1.第二部分第五课:响应式网站和移动应用 2.第三部分第一课预告:服务器 第二部分第五课:响应式网站和移动应用 在我们开始聊响应式网站之前,我们可以聊聊移动App(App是Applicati ...
- NeHe OpenGL教程 第四十五课:顶点缓存
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- kali linux 渗透测试视频教程 第五课 社会工程学工具集
第五课 社会工程学工具集 文/玄魂 教程地址:http://edu.51cto.com/course/course_id-1887.html 目录 第五课社会工程学工具集 SET SET的社会工程 ...
- Adafruit的树莓派教程第五课:使用控制电缆
Adafruit的树莓派教程第五课:使用控制电缆 时间 2014-05-09 01:11:20 极客范 原文 http://www.geekfan.net/9095/ 主题 Raspberry PiM ...
- NeHe OpenGL教程 第三十五课:播放AVI
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第二十五课:变形
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第十五课:纹理图形字
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第五课:3D空间
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
随机推荐
- 腾讯bugly团队提供的android国内镜像
腾讯bugly团队提供的国内镜像 如果使用Android SDK Manager下载比较慢或者打不开,可以使用国内镜像 使用说明 http://android-mirror.bugly.qq.co ...
- Java单例模式实现的几种方式
单例模式好多书上都是这么写的: public class SingleTon1 { private SingleTon1(){ } private static SingleTon1 instance ...
- android之HttpClient
Apache包是对android联网访问封装的很好的一个包,也是android访问网络最常用的类. 下面分别讲一下怎么用HttpClient实现get,post请求. 1.Get 请求 HttpGet ...
- Android客户端与服务器
就是普通的服务器端编程,还不用写界面,其实还比服务器编程简单一些.跟J2EE一样的服务器,你android这一方面只要用json或者gson直接拿数据,后台的话用tomcat接受请求操作数据,功能不复 ...
- 【C语言】C语言常量和变量
目录: [常量] · 定义 · 分类 · 特殊字符型常量 [变量] · 定义 · 定义变量 · 变量的使用 · 变量使用注意 · 变量常见问题 1.常量 · 定义 常量 ...
- 如何正确使用Cocoapods
➠更多技术干货请戳:听云博客 一.介绍Cocoapods Cocoapods是引入为项目引入新血液的接口,只有引入了新血液,功能才可以多样化,进而满足不同的消费群体.使用Cocoapods可以方便日后 ...
- 深入.net(继承)
继承.多态,学习目标: 1.能够熟记定义和概念 2.能够理解其内部意义 3.能够运用到自己的编码实现中 如何进行代码的复用: ----- 自己写好了一段代码,理想状态(永远都不要再写了,直接用) -- ...
- java反射机制一个例子
import java.lang.reflect.*; public class DumpMethods { public static void main(String args[]) { try ...
- 【转】超实用的JavaScript技巧及最佳实践
众所周知,JavaScript是一门非常流行的编程语言,开发者用它不仅可以开发出炫丽的Web程序,还可以用它来开发一些移动应用程序(如PhoneGap或Appcelerator),它还有一些服务端实现 ...
- HTML基础(四)——设置超链接的样式示例
***设置超链接的样式示例 a:link 超链接被点前状态 a:visited 超链接点击后状态 a:hover 悬停在超链接时 a:active 点击超链接时 在定义这些状态时,有一个顺序l v ...