美文网首页
Day Three UITableView的使用总结

Day Three UITableView的使用总结

作者: 女山湖小伙子 | 来源:发表于2017-01-06 11:25 被阅读10次

    在iOS开发中使用最为平凡的控件要数UITableView了,在swift中,UITableView和OC的代理方法相同,功能也相同,废话少说,直接上代码!

    <pre>
    //定义tableView
    let tableView = UITableView()
    tableView.frame = UIScreen.main.bounds
    tableView.delegate = self
    tableView.dataSource = self
    //设置设置footView为空 、头视图为一张图片
    tableView.tableFooterView = UIView.init()
    tableView.tableHeaderView = imageHeaderView
    view.addSubview(tableView)
    </pre>

    用懒加载定义一个数组/属性定义一个数组当做数据源,懒加载定义UIImageViews当做headerView
    <pre>
    var itemStringArr = ["企划部","软件部","咨询部","人事部"]
    </pre>

    <pre>
    lazy var dataList:[String] =
    {

        return["a","b","c","d","e","f"]
        
    }()
    

    </pre>

    <pre>
    lazy var imageHeaderView:UIImageView = {

        var headerImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 200))
        
        headerImageView.image = UIImage(named: "呵呵")
        return headerImageView
    }()
    

    </pre>

    苹果官方推荐将系统代理方法写在extension中,类似OC的category
    <pre>
    代理方法写在当中
    extension WMViewController: UITableViewDelegate,UITableViewDataSource
    {
    }
    </pre>

    具体方法如下
    <pre>
    //MARK:设置有多少行
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    switch section {
    case 0:
    return dataList.count
    default:
    return itemStringArr.count
    }

    }
    

    </pre>

    <pre>
    //MARK: 设置有2段
    func numberOfSections(in tableView: UITableView) -> Int {

        return 2
      
    }
    

    </pre>

    <pre>
    //MARK:设置tableViewCell
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let ID = "cell"
        var cell = tableView.dequeueReusableCell(withIdentifier: ID)
        if cell == nil {
            
            cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: ID)
            
        }
        if indexPath.section == 0 {
            
            cell?.textLabel?.text = dataList[indexPath.row]
            cell?.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
            
        }else
        {
            cell?.textLabel?.text = itemStringArr[indexPath.row]
            cell?.detailTextLabel?.text = "待办事项"
        }
        
        return cell!
    }
    

    </pre>

    <pre>
    //MARK:设置headerInSection高度
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 10
    }

    //MARK:设置footerInSecton的高度
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 0.01
    }
    
    //MARK:设置cell的高度
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        switch indexPath.section {
        case 0:
            return 45
        default:
            return 60
        }
    }
    

    </pre>

    <pre>
    //MARK:选中cell时触发
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    //点击cell的效果
    tableView.deselectRow(at: indexPath, animated: false)

        print("点击\(indexPath.row)")
        
    }
    
    //MARK:取消选中cell时触发
    func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
        
        print("取消\(indexPath.row)")
        
    }
    

    </pre>

    <pre>
    //MARK:允许编辑
    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
    }

    //MARK:编辑:删除、插入、无操作
    func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
        if indexPath.row < 3 {
            return UITableViewCellEditingStyle.delete
        }else if indexPath.row == 0{
            return UITableViewCellEditingStyle.none
        }else
        {
            return UITableViewCellEditingStyle.insert
        }
    }
    
    //MARK:点击删除cell时触发
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        
        print("删除第\(indexPath.row)行")
        
    }
    

    </pre>

    <pre>
    func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
    if indexPath.section == 1 {
    return true
    }else
    {
    return false
    }
    }
    </pre>

    相关文章

      网友评论

          本文标题:Day Three UITableView的使用总结

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