To Do List 앱에 새로운 할 일을 추가할 때, 내용을 입력하기 위한 View를 구현했다. 이후에 이미 추가된 할 일을 수정하는 기능을 추가하려고 보니, 기존 View를 활용하면 좋을 것 같다는 생각이 들었다.
즉, UITableViewCell
의 데이터를 View로 전달해서 기존의 값이 입력되도록 하는 기능을 구현하고자 했다.
스토리보드에서
UITableViewCell
을ViewController
로 직접 Segue 연결:indexPathForSelectedRow
가nil
이 나와서 데이터 전달 실패
해결 방안
didSelectRowAt
에서performSegue(withIdentifier:)
를 실행override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { performSegue(withIdentifier: "identifier", sender: indexPath) }
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] // 기존 데이터 전달 } } }
만약 수정한 내용을 다시
UITableView
에 반영하려면delegate
를 사용