ถ้าเราลองรันดูตอนนี้ เมื่อลองกดเลือกที่แต่ละรายการ จะเห็นว่ามีไฮไลท์เกิดขึ้นเป็นสีเทา ๆ แต่ไม่หายไป
วิธีการแก้คือ เราจะเพิ่มให้ 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 {
return 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: "Download XCode", isDone: true))
todo.add(item: TodoItem(title: "Buy milk"))
todo.add(item: TodoItem(title: "Learning Swift"))
}
}