Search
🎙️

[iOS] TableView을 활용한 데이터 전달

부제
카테고리
UIKit
세부 카테고리
컴포넌트
Combine 카테고리
최종편집일
2022/09/20 08:14
작성중
관련된 포스팅
생성 일시
2022/07/16 14:34
태그

TableView Cell 선택시

데이터 보유 객체 :
TableView 담당 뷰 컨트롤러
목적지 객체 :
상세 화면 담당 뷰 컨트롤러
핵심 : 선택된 Cell 의 indexPath.row 에 해당하는 데이터 전달 요망

prepare(for:sender:) 메서드 활용

준비사항 :
1.
출발지의 데이터 배열.
2.
목적지에 데이터 받을 프로퍼티 선언.
final class DestinationViewController: UIViewController { //할당받을 프로퍼티 var artwork: Artwork? (... 후략) }
Swift
복사
prepare(for:sender:) 메서드를 재정의하여 사용하면 전환될 화면인 다음 뷰컨트롤러에 데이터를 넘겨 줄 수 있습니다.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { guard let indexPath = tableView.indexPath(for: sender as! UITableViewCell) else { os_log(.fault, log: .ui, OSLogMessage.indexPathIsNil) return } //segue의 식별자를 검사!! if segue.identifier == Identifier.Segue.(사용자 정의 세그 identifier) { //segue 의 destination 을 목적지 뷰컨트롤러 클래스로 다운캐스팅 let followingViewController = segue.destination as? DestinationViewController // indexPath.row 에 해당하는 데이터 할당. followingViewController?.artwork = artworks[indexPath.row] } }
Swift
복사
핵심.
1.
다운 캐스팅 : sender as! UITableViewCell
2.
sender 로부터 선택된 Cell 의 indexPath.row 추출
3.
데이터 배열의 indexPath.row 번째 인덱스에 있는 요소를 목적지의 프로퍼티에 할당.