你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> static cell 與 dynamic cell 混合使用

static cell 與 dynamic cell 混合使用

編輯:IOS開發基礎

關於靜態cell與動態cell的混合使用,google一下便會有很多相關文章,這裡也是看過一些前輩的經驗(已經忘記具體是從哪篇文章得到的幫助)之後自己做的筆記。

在某些界面中static cell與dynamic cell混合使用會事半功倍,比如手機上的Wi-Fi功能等,效果圖如下:

1.png

Wi-Fi界面的第一組與第三組的行數都是固定的,且布局並不相同,類似這樣的布局使用static cell很快就可以完成,然而第二組卻需要使用dynamic cell。這時候就會用到靜態cell與動態cell混合使用的情況。

首先,在Storyboard中添加一個UITableViewController,設置為Static cell,並設置好第一組與第三組的內容,第二組需要設置一個空的Cell,如圖:

2.png

然後,給第二組的空白Cell設置identifier值,如圖:

3.png

然後,第二組需要自定義cell,這裡使用XIB來完成,如圖:

4.png

接下來需要用代碼注冊Nib,如下:

let nib = UINib(nibName: "WiFiTableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "WiFiTableViewCell")

最後,為了讓 static cell 與 dynamic cell 能夠混合使用,需要實現TableView的代理,代碼如下:

  // 以下代理方法必須實現
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  if indexPath.section == 1 {
    let cell = tableView.dequeueReusableCellWithIdentifier("WiFiTableViewCell") as? WiFiTableViewCell
    return cell!
  }
  return super.tableView(tableView, cellForRowAtIndexPath: indexPath)
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  if section == 1 {
    return 10 //這裡返回第二組的行數
  }
  return super.tableView(tableView, numberOfRowsInSection: section)
}

override func tableView(tableView: UITableView, indentationLevelForRowAtIndexPath indexPath: NSIndexPath) -> Int {
  if indexPath.section == 1 {
    return super.tableView(tableView, indentationLevelForRowAtIndexPath: NSIndexPath(forRow: 0, inSection: 1))
  }
  return super.tableView(tableView, indentationLevelForRowAtIndexPath: indexPath)
}

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
  if indexPath.section == 1 {
    return 44
  }
  return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
}

值得注意的是:

  • 在storyboard中需要給第二組設置一行空的Cell,並設置identifier值。

  • 在代碼中也需要注冊Cell

  • 上面提到的代理方法必須實現

最後,本文主要是記錄關於 static cell 與 dynamic cell 的混合使用,因此很多細節問題並沒有處理,更多關於static cell另外的一些使用,可以點擊這裡【更優雅地使用Static Cell】

【Demo下載】



文章轉自 Chakery的簡書
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved