2017年3月13日 星期一

tableview sample code


記得要在main.stroyboard那邊把tableview的delegate 和 Datasource拉到view裡面


class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

    let fruitArray = ["apple","banna","mango","watermelon"]
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return fruitArray.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
    
        cell.textLabel?.text = fruitArray[indexPath.row]
        return cell
    }
    

}

----------------------------------------------------

使用了   UITableViewDelegate 和   UITableViewDataSource

要去實作 這三個 func...

  // 有幾個section
 func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    
//  有幾個 row
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return fruitArray.count
    }
    
//  每一個tableviewcell 的實體...
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
    
        cell.textLabel?.text = fruitArray[indexPath.row]
        return cell
    }




indexPath.row 和  indexPath.section  可以拿來定位




------------------------------------------------

考慮記憶體的回收的問題

現在mainstory,  點選TableView, 新增一個 Prototype Cells

  

然後點到 table view 下面的 cell  ,  把他的IdentifyId 改成 你要的名字. 這裡是叫 "Cell"































 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //let cell = UITableViewCell()
    
         let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath )
        
        cell.textLabel?.text = fruitArray[indexPath.row]
        return cell
    }

table view 的style -> "group",  會有系統預設的分隔線


section header文字的設定方法

 func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        if section == 0 {
            return "FRUIT"
        }else{
            return "COLOR"
        }

    }

--------------------------------------------
影藏  狀態列

 override var prefersStatusBarHidden: Bool{
        return true

    }

或是把整個table view 往下移

override func viewDidLoad() {
        super.viewDidLoad()

        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false

        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        // self.navigationItem.rightBarButtonItem = self.editButtonItem()
        
        self.tableView.contentInset = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0)
        
        

    }


第三種方法就是在  tableviewcontroller 裡面 embed in  一個  navigator controller

他就會出現一個 status bar..  

-------------------------------------------

秀出tableView 的 image


 cell.imageView?.image =   UIImage(named: animalArray[indexPath.row])



-----------------------------------------
實作當按下項目後..  會跳到其他的viewcontroller



在 上方的那個黃色小圓點... 點按滑鼠右鍵..  拖拉到你想要跳的的view-controller

,  然後就會出去這個segue..   然後點選這個segue...  填入 identifier ,  這邊我填入 "showDetail"

然後實作這個function


    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        performSegue(withIdentifier: "showDetail", sender: nil)

    }

利用 performSegue(withIdentifier: "showDetail", sender: nil)

在 withIdentifier 的欄位指定你要的 segue









沒有留言:

張貼留言