[UIKit] UITableView에서 Cell 추가/수정을 하나의 View에서 처리하기

Swiftios
avatar
2025.02.11
·
2 min read

To Do List 앱에 새로운 할 일을 추가할 때, 내용을 입력하기 위한 View를 구현했다. 이후에 이미 추가된 할 일을 수정하는 기능을 추가하려고 보니, 기존 View를 활용하면 좋을 것 같다는 생각이 들었다.

즉, UITableViewCell 의 데이터를 View로 전달해서 기존의 값이 입력되도록 하는 기능을 구현하고자 했다.

  1. 스토리보드에서 UITableViewCellViewController 로 직접 Segue 연결: indexPathForSelectedRownil 이 나와서 데이터 전달 실패

해결 방안

  1. didSelectRowAt 에서 performSegue(withIdentifier:) 를 실행

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        performSegue(withIdentifier: "identifier", sender: indexPath)
    }
  2. prepare(for: sender:) 에서 데이터 전달

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "identifier" {
            let destinationVC = segue.destination as? ViewController
            
            if let indexPath = sender as? IndexPath {
                destinationVC.task = tasks[indexPath.row]  // 기존 데이터 전달
            }
        }
    }
  3. 만약 수정한 내용을 다시 UITableView 에 반영하려면 delegate 를 사용







- 컬렉션 아티클