UITableView 表格視圖


加入協定

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

宣告資料

var tableView = UITableView()
var names = Array(1...20) // 宣告一組資料陣列

let WIDTH = UIScreen.main.bounds.size.width
let HEIGHT = UIScreen.main.bounds.size.height

viewDidLoad

view.backgroundColor = UIColor.lightGray

    // frame, style 為.plain
    tableView = UITableView(frame: CGRect(x: 0,
                                          y: 0,
                                          width: WIDTH,
                                          height: HEIGHT),
                            style: .plain)
    /*
     UITableViewStyle
     .plain           預設
     .grouped         分組
     */
    // 委任
    tableView.delegate = self
    tableView.dataSource = self
    // 註冊cell
    tableView.register(UITableViewCell.self,
                       forCellReuseIdentifier: "cell")
    // 背景顏色
    tableView.backgroundColor = UIColor.lightGray
    // 背景圖片
    //tableView.backgroundView = UIImageView(image: UIImage?)
    // 分割線樣式
    tableView.separatorStyle = .singleLine
    /*
     UITableViewCellSeparatorStyle
     .none                  無分割線
     .singleLine            單線條
     .singleLineEtched      帶點效果的線條
     */
    // 分割線顏色
    tableView.separatorColor = UIColor.lightGray
    // 分割線位置(top, left, bottom, right)
    tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0)
    // 允許點擊
    //tableView.allowsSelection = true
    // 允許雙點擊
    //tableView.allowsMultipleSelection = false
    // 垂直滾動指示器
    //tableView.showsVerticalScrollIndicator = true
    // 水平滾動指示器
    //tableView.showsHorizontalScrollIndicator = true
    // 指示器樣式
    //tableView.indicatorStyle = .default
    /*
    UIScrollViewIndicatorStyle
     .black       黑
     .white       白
     .default     預設
     */
    // 點選狀態列跳至最上方
    tableView.scrollsToTop = false
    // 可否滑動
    //tableView.isScrollEnabled = false
    // 彈回效果
    //tableView.bounces = false
    // 水平彈回效果
    //tableView.alwaysBounceHorizontal = false
    // 垂直彈回效果
    //tableView.alwaysBounceVertical = false
    // 置頂畫面顯示
    //tableView.tableHeaderView = UIView()
    // 底部畫面顯示, 移除多餘分割線
    tableView.tableFooterView = UIView(frame: .zero)
view.addSubview(tableView)

UITableViewDelegete、UITableViewDataSource

// 組數
func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}
// 列數
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // 宣告的資料總數
    return names.count 
}
// 內容
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    var cell = tableView.dequeueReusableCell(withIdentifier: "cell")
    if cell == nil {
        cell = UITableViewCell(style: .default, 
                               reuseIdentifier: "cell")
    }

    // 內容顯示, ex. 測試資料 1, 測試資料 2...
    cell?.textLabel?.text = "測試資料   \(names[indexPath.row])"
    // 選擇樣式
    //cell?.selectionStyle = .none
    /*
    UITableViewCellSelectionStyle
     .default     預設
     .gray        灰色
     .none        無效果
     */

    return cell!
}
// 點選觸發
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    // 取消點選狀態
    tableView.deselectRow(at: indexPath, 
                          animated: true)
}

更多常用設定

// header 高度
func tableView(_ tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat {
}
// footer 高度
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
}
// Cell 高度
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
}
// header 內容
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    //let header = tableView.dequeueReusableCell(withIdentifier: "header")
    //header?.textLabel?.text = "header"
    //return header
}
// footer 內容
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    //let footer = tableView.dequeueReusableCell(withIdentifier: "footer")
    //footer?.textLabel?.text = "footer"
    //return footer
}
// cell 取消點選觸發
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
}
// cell 左滑觸發
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
}
// cell 可否編輯
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
}
// 編輯狀態觸發
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
}
// cell 可否移動
func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
}
// 移動觸發
func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
}

results matching ""

    No results matching ""