TableView를 사용하면서 Cell을 재사용하기 위해 extension으로 UITableViewDataSource를 재정의하고 빌드를 진행했다.
extension ViewController : UITableViewDataSource {
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
return cell
}
}
앱은 정상적으로 실행됐지만 새로운 task를 등록하면 아래와 같은 오류가 발생했다.
unable to dequeue a cell with identifier Cell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard
해석해보면 스토리보드의 셀과 연결되어 있지 않다는 오류였다.
스토리보드에서 Cell의 identifier를 확인해보니 설정되어 있지 않았고 이를 Cell로 변경해줬더니 정상적으로 작동했다.
참고
- tableView(_:numberOfRowsInSection:)
- dequeueReusableCell(withIdentifier:for:)