31-UITabView

作者: NetWork小贱 | 来源:发表于2017-06-19 12:06 被阅读73次

    一、UITabView的介绍

    UITableView在App 的开发中占有很重要的位置。主要用于数据信息以列表形式的展示等。还有更多的使用地方...

    二、UITabView 的属性&方法介绍& 代理

    1、初始化

    /**
     初始化
     */
    let NWTableView = UITableView.init(frame: self.view.frame, style: .plain)
    /**
     设置两个代理
     */
    NWTableView.delegate = self
    NWTableView.dataSource = self
    /**
     设置背景色颜色
     */
    NWTableView.backgroundColor = UIColor.clear
    /**
     渲染
     */
    self.view.addSubview(NWTableView)
    

    2、必须要实现的三个代理

    // TODO: 返回列表的个数
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
     return dataArray.count
    }
    // TODO: 返回列表的高度
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
     return 40.0
    }
    // TODO: 设置Cell 的样式和布局
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     let  CellStr = "NetWorkCell"
     var Cell = tableView.dequeueReusableCell(withIdentifier: CellStr)
     if Cell==nil {
        Cell = UITableViewCell.init(style: .default, reuseIdentifier: CellStr)
        Cell?.backgroundColor = UIColor.clear
     }
    Cell?.textLabel?.text = (dataArray[indexPath.row] as! String)
    return Cell!
    }
    

    以上三个代理必须实现,不然就编码成功,切记。。

    3、添加数据

    /**
     设置全局数据变量
     */
     var dataArray = NSMutableArray.init()
    

    数据的赋值

    // TODO: 设置数据
    func setTableViewData() {
            dataArray = ["赵云","吕布","董卓","貂蝉","周瑜"]
    }
    

    4、cell 被选中 & 是否允许选中 & 选中前&选中后 的代理事件

    1、是否cell 是否可以选择的函数
    // TODO: 设置是否Cell,允许选中
    func tableView(_ tableView: UITableView, shouldHighlightRowAt indexPath: IndexPath) -> Bool {
             return true
    }
    
    2、满足条件后的选择出发步骤
    第一步》
    // TODO: 选择哪个Cell 为高亮,调用该函数
    func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
             print("\(indexPath.row)" + "行被点高亮")
    }
    
    第二步》
    // TODO: 点击松开手指,解除高亮状态
    func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) {
             print(indexPath.row)
    }
    
    第三步》
    // TODO: 返回松开手指后的那个cell
    func tableView(_ tableView: UITableView, willDeselectRowAt indexPath: IndexPath) -> IndexPath? {
             print("Cell结束选中")
             return indexPath
    }
    
    第四步》
    // TODO : 这是被选中cell,前调用该函数
    func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
             return indexPath
    }
    
    第五步》
    // TODO: 选择哪一个Cell
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            print("我选择" + (dataArray[indexPath.row] as! String))
    }
    

    5、UITableView 的组的头部&尾部高度和View和Title 的设置

    1、能够展示多少组函数

    // TODO: 返回组数
    func numberOfSections(in tableView: UITableView) -> Int {
             return 1
    }
    

    2、组的头部和底部高度设置

    // TODO : 设置组的底部高度
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
             return 30.0
    }
    // TODO : 设置组的头部高度
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
             return 30.0
    }
    

    3、组的View

    // TODO: 这是设置组的头部的View
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
             return nil
    }
    // TODO: 我组底部设置View
    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
             return nil
    }
    
    

    4、组的头部和底部Title

    // TODO : 设置每个组的底部标题
    func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
             return "NetWork小贱-Bottom"
    }
    // TODO : 设置每个组的头部标题
    func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
             return "NetWork小贱-Top"
    }
    

    6、UITableView的索引

    1、索引的数据

    // TODO: tableView 的索引
    func sectionIndexTitles(for tableView: UITableView) -> [String]? {
             return ["A","B","C","D","E"]
    }
    

    2、根据索引滑动到哪里

    // TODO: 根据索引返回索引title,在索引组里面的位置
    func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {
            return 1
    }
    

    7、UITableView的编辑和菜单按钮的自定义

    1、UITableView 是否允许编辑

    // TODO: 是否允许被编辑
    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
             return false
    }
    

    2、开始编辑的触发步骤

    第一步》

    // TODO: 哪一行将要开始编辑调用该函数
    func tableView(_ tableView: UITableView, willBeginEditingRowAt indexPath: IndexPath) {
         print("\(indexPath.row)" + "行开始编辑")
    }
    

    第二步》

    // TODO : Cell 编辑动作执行区
    func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
          print("开始编辑")
          /**
          创建编辑按钮
          */
           let TopBtn = UITableViewRowAction.init(style: .normal, title: "置顶") { (UITableViewRowAction, IndexPath) in
               print("我要执行置顶操作")
            }
           /**
             已阅读
           */
           let ReadBtn = UITableViewRowAction.init(style: .normal, title: "已阅读") { (UITableViewRowAction, IndexPath) in
               print("我已经阅读过了")
           }
           return [TopBtn,ReadBtn]
    }
    

    注意,如果第二步没有实现的话,编辑菜单里就一个delete 按钮。可以更改这个按钮显示的文字

    // TODO : 删除按钮的title 改变函数
    func tableView(_ tableView: UITableView, titleForDeleteConfirmationButtonForRowAt indexPath: IndexPath) -> String? {
        return "我要删除"
    }
    

    第三步》

    // TODO: 对cell 编辑结束后,调用改函数
    func tableView(_ tableView: UITableView, didEndEditingRowAt indexPath: IndexPath?) {
        print("\(String(describing: indexPath?.row))" + "被编辑结束了")
    }
    

    8、长按弹出菜单

    1、是否允许弹出菜单

    // TODO: 是否展示编辑餐单
    func tableView(_ tableView: UITableView, shouldShowMenuForRowAt indexPath: IndexPath) -> Bool {
     return true
    }
    

    2、菜单中按钮编辑执行的函数

    // TODO : 执行餐单里面的事件"
    func tableView(_ tableView: UITableView, performAction action: Selector, forRowAt indexPath: IndexPath, withSender sender: Any?) {
    print("执行餐单里面的事件")
    }
    

    相关文章

      网友评论

        本文标题:31-UITabView

        本文链接:https://www.haomeiwen.com/subject/cxsmqxtx.html