1. 程式人生 > >swift tableView的簡單用法

swift tableView的簡單用法

//
//  ViewController.swift
//  SwiftTableView
//
//  Created by fe on 2017/3/3.
//  Copyright © 2017年 fe. All rights reserved.
//

import UIKit

//swift遵守協議只需要跟在父類之後,使用逗號隔開
class ViewController: UIViewController {


    //1.建立tableView物件
    lazy var tableView : UITableView = UITableView()
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //初始化UI
        setUpUI()
    
    }
    

}

/*
 extension ViewController {} 相當於OC中的類別,可以把一些方法放在裡面,不能寫屬性
 */
// MARK:-初始化UI的擴充套件
extension ViewController{
    ///初始化UI
    func setUpUI() {
        //2設定tableView的frame
        tableView.frame = view.bounds
        //3.新增到控制器view
        view.addSubview(tableView)
        //4設定資料來源
        tableView.dataSource = self
        //5設定代理
        tableView.delegate = self
    }
}


/*
 extension ViewController {} 相當於OC中的類別,可以把一些方法放在裡面,不能寫屬性
 */

// MARK: tableView的資料來源和代理的擴充套件  (這裡相當於OC中的 #pragma 書籤)
extension ViewController :UITableViewDataSource,UITableViewDelegate{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 20;
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //1建立cell
        let identifier : String = "identifier"
        var cell = tableView.dequeueReusableCell(withIdentifier: identifier)
        if cell == nil {
            //在swift中使用列舉型別方式 1>列舉型別.具體型別  2> .具體型別
            cell = UITableViewCell(style: UITableViewCellStyle.value1, reuseIdentifier: identifier)
        }
        //2設定資料
        
        cell?.textLabel?.text = "swiftTableView"
        cell?.detailTextLabel?.text = "\(indexPath.row)"
        
        //3返回cell
        
        return cell!//在這個地方返回的cell一定不為nil,可以強制解包
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        MyLog(message: indexPath.row)
    }
}