애매하게 알면 모르는거라고 생각하기에...
이번에 기본기를 확실하게 잡자.
데이터를 받아 뷰를 그려주는 역할
-> 보여주는 것을 담당
코드 예시 1
func tableView(_ tableView : UITableView, numberOfRowsInSection section : Int ) -> Int {
return self.tasks.count //배열의 개수 반환
}
func tableView(_ tableView : UITableView, cellForRowAt indexPath : IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
//배열에 저장되어 있는 할 일 요소들을 가져오기
let task = self.tasks[indexPath.row]
cell.textLabel?.text = task.title
//체크마크 생성 @20211218LDH Start
if task.done {
cell.accessoryType = .checkmark
} else {
cell.accessoryType = .none
}
//체크마크 생성 @20211218LDH End
return cell
}
numberOfRowsInSection와 같이 Section의 row 개수를 반환해서 보여주거나
cellForRowAt와 같이 UITableViewCell을 반환해서 화면에 보여주는 역할
어떤 행동에 대한 동작을 제시
사용자에게 보이는 부분중 어떤 것을 클릭하거나 어떤 행동을 했을 때, 그 행동에 대한 동작을 수행.
코드 예시 2
extension ViewController : UITableViewDelegate {
//선택된 셀의 동작을 제시 ( true <-> false )
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
var task = self.tasks[indexPath.row]
task.done = !task.done
self.tasks[indexPath.row] = task
self.tableView.reloadRows(at: [indexPath], with: .automatic)
}
}
위 두 예시를 보면
Delegate에서 선택된 특정 셀에 대한 동작을 제시하고, Data Source에서 반영된 동작으로 화면에 보여준다.