💻 개발/오늘의 삽질

[iOS / Swift] 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

고도고도 2022. 8. 21. 14:52

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:)

 

Apple Developer Documentation

 

developer.apple.com

- dequeueReusableCell(withIdentifier:for:)

 

Apple Developer Documentation

 

developer.apple.com