segueway로 연결 된 ViewController간 데이터 넘기기 과정
1-1. ViewController에서 클릭이 됐을 때 segway를 수행하는데
1-2 준비 할 때 데이터를 미리 넘겨주고 싶다.
1-3 데이터의 대한 힌트를 호출 시점에 넣어준다.
2-1 segueway 수행 직전에 준비하는 단계가 있다.
2-2 준비한 데이터와, 데이터에 대한 힌트 작성
2-3 힌트를 가지고 몇 번째 인지 데이터에서 해당하는 index를 가져와서
3. DetailViewcontroll에 꽂는다. => 준비완료
4. 데이터를 가지고 segueway를 타고
5. viewDidLoad시점에는 메모리만 올라오고 뜨지는 않은 상태
6. 뜨기 직전에 UIcomponent를 다 업데이트(updateUI)시킨다.
단계별로 코드를 확인 해보겠습니다.
1-1 . ViewController에서 클릭이 됐을 때 segueway를 수행합니다.
segueway를 수행하라는 코드 작성
performSegue(withIdentifier: "showDetail", sender: idexPath.row)
구별인자를 showDetail로 설정했고
1-2, 1-3 : sender
1-2. 준비 할 때 데이터를 미리 넘겨주고 싶다.
1-3. 데이터의 대한 힌트를 호출 시점에 넣어준다.
sender의 파라미터를 통해서 정보를 미리 보낼 수 있는데, 이 정보로 segueway를 실행하기 위한 준비를 할 수 있습니다.
수행 명령 이후 준비를 하라!
2-1 segueway 수행 직전에 준비하는 단계가 있습니다.
2-2 준비한 데이터와, 데이터에 대한 힌트 작성
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//수행 할 때 UIStoryboardSegue에 sender로 넘어온 데이터를 넘겨주자
if segue.identifier == "showDetail" {
// 1. 에서 설정한 구별자 "showDetail"로 조건을 답니다.
let vc = segue.destination as? DetailViewController
// segue.detination을 DetailViewController로 캐스팅합니다.
// DetailViewContrller에게 데이터를 줄거야(※DetailViewController는 segueway로 연결된 스토리보드)
2-3 힌트를 가지고 몇 번째 인지 데이터에서 해당하는 index를 가져와서
if let index = sender as? Int{ // 몇 번째인지 보내니까
//1.에서 보낸 정보 sender를 Int로 캐스팅합니다.
vc?.name = nameList[index]
vc?.bounty = bountyList[index]
}
// 준비를 마친 상태입니다.
}
}
override func viewDidLoad() {
super.viewDidLoad()
// 실행 직전에
}
DetailViewController에
뜨게 할 UIImageView, UILabel2개 를 각각 DetailViewController에 링크시키고
데이터 프로퍼티에 값을 설정합니다.
3. DetailViewcontroll에 꽂는다. => 준비완료
func updateUI() {
if let name = self.name, let bounty = self.bounty{
let img = UIImage(named: "\(name).jpg")
imgView.image = img
nameLabel.text = name
bountyLabel.text = "\(bounty)"
}
}
데이터와 값세팅까지 마치고, 이제 데이터를 가지고 sequway를 타게 되는데, 데이터를 가지고 가는 경로가 중요합니다.
4. 데이터를 가지고 segueway를 탑니다.
5. viewDidLoad시점에는 메모리만 올라오고 뜨지는 않은 상태
6. 뜨기 직전에 UIcomponent를 다 업데이트(updateUI)시킨다.
ViewController가 뜨기 전에 메모리는 올라와 있고
보이기 바로 직전에 메모리에 할당된 값들을 업데이트 시켜주는 경로입니다.
코드 작성 순
Seguway를 수행 명령
↓
Seguway준비
↓
데이터와 메모리 가지고 updateUI메소드에 꽂기
↓
데이터가 Seguway를 탐
↓
띄우기 직전에 업데이트
선배님들의 많은 의견 공유 환영합니다.
'iOS > Swift 어플 따라하기' 카테고리의 다른 글
[Swift] 뮤직 플레이어, 홈화면에서 플레이어 화면 띄우기 (0) | 2022.03.22 |
---|---|
[Swift] 뮤직 플레이어 코드 / 싱글 톤 객체 만들기 (2) | 2022.03.22 |
[Swift] MVVM Design Pattern (2) | 2022.03.15 |
[Swift] List 형태의 나열 어플 1-2 -> CustomCell (0) | 2022.03.14 |
[Swift] List 형태의 나열 어플 1-1 (0) | 2022.03.11 |