• 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。

    添加手势只需三步:

    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

  • 相关阅读:
    Facebook的体系结构分析---外文转载
    简易的IOS位置定位服务
    【简易版】IOS仿periscope自制狂赞飘桃心
    The Linux Programming Interface
    freeswitch嵌入lua脚本
    Epoll Tutorial – epoll In 3 Easy Steps!
    基于freeswitch的webrtc与sip终端呼叫
    buildroot添加第三方库
    rfc
    TCP/UDP Server-Client implementation in C
  • 原文地址:https://www.cnblogs.com/quanxi/p/6025876.html
Copyright © 2020-2023  润新知