这一次我们要学习Gesture、TableView、AlertView三种技术。

一、Gesture

在iOS中,可以使用系统内置的手势识别(GestureRecognizer),也可以创建自己的手势。

GestureRecognizer将低级别的转换到高级别的执行行为,然后绑定到view的对象,所以当发生手势时,绑定到的view对象会响应,它确定这个动作是否对应一个特定的手势(swipe,pinch,pan,rotation)

如果它能识别手势,那么就会向绑定它的view发送消息。

UIKit框架提供了预定义的GestureRecognizer:UITapGestureRecognizer、UIPanGestureRecognizer、UIPinchGestureRecognizer、UISwipeGestureRecognizer、UIRotationGestureRecognizer、UILongPressGestureRecognizer。

添加手势只需三步:

  1. 建立手势识别器(如 UITapGestureRecognizer)实例,在其 addTarget 方法中设置 target(一般就是 self)、action 方法,指定一些属性,如识别器实例的 isUserInteractionEnable = true
  2. 附加识别器到视图:*View.addGestureRecognizer(识别器实例)
  3. 实现 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实现步骤:

  1. 添加UITableView及Prototype Cells。
  2. 需要某一个类遵循UITableViewDelegate、UITableViewDataSource协议(并在后面实现三个特定的方法),然后对TableView设置代理,设置为刚才的类:tableView.delegate = self(或者其他类名)、tableView.dataSource = self。
  3. 设置TableViewCell的Identifier(只要唯一就行)
  4. 初始化数据
  5. 实现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的更多相关文章

  1. 斯坦福IOS开发第五课(第一部分)

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27706991 作者:小马 因为第五课的内容比較多.分两部分来写. 一 屏幕旋转基本 ...

  2. 【Web探索之旅】第二部分第五课:响应式网站和移动应用

    内容简介 1.第二部分第五课:响应式网站和移动应用 2.第三部分第一课预告:服务器 第二部分第五课:响应式网站和移动应用 在我们开始聊响应式网站之前,我们可以聊聊移动App(App是Applicati ...

  3. NeHe OpenGL教程 第四十五课:顶点缓存

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  4. kali linux 渗透测试视频教程 第五课 社会工程学工具集

    第五课 社会工程学工具集 文/玄魂 教程地址:http://edu.51cto.com/course/course_id-1887.html   目录 第五课社会工程学工具集 SET SET的社会工程 ...

  5. Adafruit的树莓派教程第五课:使用控制电缆

    Adafruit的树莓派教程第五课:使用控制电缆 时间 2014-05-09 01:11:20 极客范 原文 http://www.geekfan.net/9095/ 主题 Raspberry PiM ...

  6. NeHe OpenGL教程 第三十五课:播放AVI

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  7. NeHe OpenGL教程 第二十五课:变形

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  8. NeHe OpenGL教程 第十五课:纹理图形字

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  9. NeHe OpenGL教程 第五课:3D空间

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

随机推荐

  1. SPC2014 :“FOSL”不是替代InfoPath,只是另外一种创建表单的方式

    今天在SPC2014微软宣布他们技术路线图.其实,没有足够证据替代InfoPath,只是另外的一种尝试 - FOSL(对SharePoint列表表单). FOSL使用相同的引擎,用于创建表单的访问服务 ...

  2. 【iOS】小项目框架设计(ReactiveCocoa+MVVM+AFNetworking+FMDB)

    上一个项目使用到了ReactiveCocoa+MVVM+AFNetworking+FMDB框架设计,从最初的尝试,到后来不断思考和学习,现在对这样一个整体设计还是有了一定了理解与心得.在此与大家分享下 ...

  3. 【代码笔记】iOS-点击任何处,出现城市

    一,效果图. 二,工程目录. 三,代码. //点击任何处,出现城市 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { ...

  4. 窗口activity

    android:theme="@style/FloatActivity" E:\day9\mobilesafe\res\values\style

  5. HTTP协议基本知识

    Xcode7.0以上版本必须操作:https http 在Info.plist中添加NSAppTransportSecurity类型Dictionary. 在NSAppTransportSecurit ...

  6. OC 类方法,对象方法,构造方法以及instancetype和id的异同

    OC 类方法,对象方法,构造方法以及instancetype和id的异同 类方法: 类方法是可以直接使用类的引用,不需要实例化就可以直接使用的方法.一般写一些工具方法. 类方法: 声明和实现的时候,以 ...

  7. Android中将xml布局文件转化为View树的过程分析(下)-- LayoutInflater源码分析

    在Android开发中为了inflate一个布局文件,大体有2种方式,如下所示: // 1. get a instance of LayoutInflater, then do whatever yo ...

  8. iOS开发之UISearchBar初探

    iOS开发之UISearchBar初探 UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开 ...

  9. redis配置文件参数说明及命令操作

    redis下载地址:https://github.com/MSOpenTech/redis/releases. Redis 的配置文件位于 Redis 安装目录下,文件名为redis.windows. ...

  10. 在SQL2008中使用XML应对不确定结构的参数

    目的:统一接口,当数据结构发生变化时,前后端业务接口不发生变化,由业务具体解析结构. 规则:确定的接口用参数表(多行提交),不确定的参数用XML   DECLARE @r TABLE     (    ...