当前位置: > > > Swift - 给表格TableView添加页眉和页脚

Swift - 给表格TableView添加页眉和页脚

(本文代码已升级至Swift3)

UITableView 具有 var tableHeaderView:UIView? 属性和 var tableFooterView:UIView? 属性,可以通过给其赋值来创建列表 TableView 的页眉和页脚。

效果图如下:

代码如下:
import UIKit

class ViewController: UIViewController,UITableViewDelegate,
UITableViewDataSource,UIGestureRecognizerDelegate {
    
    var tableView:UITableView?
    
    var ctrlnames:[String] = ["UILabel 标签","UIButton 按钮","UIDatePiker 日期选择器"]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //创建表视图
        self.tableView = UITableView(frame:self.view.frame, style:.plain)
        self.tableView!.delegate = self
        self.tableView!.dataSource = self
        //创建一个重用的单元格
        self.tableView!.register(UITableViewCell.self,
                                      forCellReuseIdentifier: "SwiftCell")
        self.view.addSubview(self.tableView!)
        
        //给TableView添加表头页眉
        let headerView:UIView = UIView(frame:
            CGRect(x:0, y:0, width:tableView!.frame.size.width, height:60))
        let headerlabel:UILabel = UILabel(frame: headerView.bounds)
        headerlabel.textColor = UIColor.white
        headerlabel.backgroundColor = UIColor.clear
        headerlabel.font = UIFont.systemFont(ofSize: 16)
        headerlabel.text = "TableView 页眉"
        headerView.addSubview(headerlabel)
        headerView.backgroundColor = UIColor.black
        tableView?.tableHeaderView = headerView
        
        //给TableView添加表头页尾
        let footerView:UIView = UIView(frame:
            CGRect(x:0, y:0, width:tableView!.frame.size.width, height:60))
        let footerlabel:UILabel = UILabel(frame: footerView.bounds)
        footerlabel.textColor = UIColor.white
        footerlabel.backgroundColor = UIColor.clear
        footerlabel.font = UIFont.systemFont(ofSize: 16)
        footerlabel.text = "TableView 页脚"
        footerView.addSubview(footerlabel)
        footerView.backgroundColor = UIColor.black
        tableView?.tableFooterView = footerView
    }
    
    //在本例中,只有一个分区
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    
    //返回表格行数(也就是返回控件数)
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.ctrlnames.count
    }
    
    //创建各单元显示内容(创建参数indexPath指定的单元)
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
        -> UITableViewCell {
        //为了提供表格显示性能,已创建完成的单元需重复使用
        let identify:String = "SwiftCell"
        //同一形式的单元格重复使用,在声明时已注册
            let cell = tableView.dequeueReusableCell(
                withIdentifier: identify, for: indexPath) as UITableViewCell
        cell.accessoryType = .disclosureIndicator
        cell.textLabel?.text = self.ctrlnames[indexPath.row]
        return cell
    }
}
评论1
  • 1楼
    2016-03-30 20:12
    浮影晴天

    如果给两个两个分区分别用代码添加页眉页脚呢?

    站长回复

    可以参考我原来写的这篇文章:Swift - 使用表格组件(UITableView)实现分组列表(http://www.hangge.com/blog/cache/detail_557.html)