ถ้าเราลองรันดูตอนนี้ เมื่อลองกดเลือกที่แต่ละรายการ จะเห็นว่ามีไฮไลท์เกิดขึ้นเป็นสีเทา ๆ แต่ไม่หายไป
เมื่อเราเลือก item จะทำให้ cell นั้นมี state ค้างอยู่ในสถานะ selected เราจะต้องทำการ deselect ที่ cell นั้น
วิธีการคือ เราจะเพิ่มให้ ViewController เป็น Delegate ของ TableView และสั่งให้ TableView เลิก Select รายการนั้นหลังจาก Select เสร้จแล้ว เพื่อให้ไฮไลท์หายไป
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
จากนั้นเหมือนเดิมคือ เชื่อม TableView กับ ViewController ว่า ViewController เป็น delegate
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var todo = Todo()
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
todo.totalItems
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "todoItemCell", for: indexPath)
let item = todo.item(at: indexPath.row)
cell.textLabel?.text = item.title
cell.accessoryType = item.isDone ? .checkmark : .none
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
todo.add(item: TodoItem(title: "Buy milk"))
todo.add(item: TodoItem(title: "Learning Swift"))
todo.add(item: TodoItem(title: "Download XCode", isDone: true))
}
}