Toy Project/Apple Music (iOS)

9. View 사이의 데이터 이동

개발자킹콩 2021. 2. 24. 18:24

뷰 간의 데이터 이동

 

 

Home View에서 collectionView Cell을 클릭하게 되었을 때 PlayerView가 뜨도록 구현해보자

 

 

현재는 indexPath에 해당하는 item을 클릭하게 되면 몇 번째 아이템인지 출력만 해놓은 상태이다. 

 

여기서 PlayerViewController을 가져와서 present를 시킬 것이다.

우리는 Segue없이 구현하였기에 Storyboard를 가져올 것이다.

storyboard를 가져와서 해당 ViewController를 가져올 것이다. —> 여러 ViewController를 가질 수 있기에 identifier로 접근

Storybaord id는 다음과 같이 지정한다.

 

 

 

 

우리는 Player.Storyboard를 가져와서 연결되어 있는 PlayerViewController을 id로 구분하여 가져올 것이다.

가져오면서 ViewController을 instant화 시키기 위해 instantiateViewController method를 호출하였다.

 

 

 

 

 

 

그 후 present를 호출하여 playerView를 띄운다.

 

 

 

 

 


 

 

 

 

하지만 우리는 선택한 item의 정보를 가져와서 띄운것이 아니라 Storyboard에 지정한 데이터만 띄운것이다.

그렇다면 곡을 전달하여 원하는 데이터를 띄우도록 구현해보자

 

 

 

 

 

우선 PlayerViewController에 Singleton object인 SimplePlayer.shared를 stored property로 선언한다.

그 후 아래와 같이 playerVC안에 존재하는 simplePlayer에 현재 아이템을 교체하여 playerView를 띄울 것이다.

 

 

 

 

 

Header 클릭 시 똑같이 해당 아이템을 PlayerController에 던져서 음악 재생이 이루어 져야하니 똑같이 구현하겠다.

다른점이 있다면 tap 이 눌렸을때 어떤 아이템인지 인자로 들어오기에 해당 아이템을 indexPath.item으로 불러오는 코드는 제외된다. 그리고 present가 self안에 존재하는 것임을 지정해 준다.

 

 

 

 

우리는 이렇게 PlayerViewController에 정보를 넘겨 줄 수 있는 것이다.

—> Segue와 비교하면서 생각해보자

 

 

 

 


 

 

 

 

이렇게 데이터를 눌렀을 때 PlayerViewController를 띄우는 것은 성공했다.

데이터를 받아 오는 것도 성공했다.

하지만 PlayerViewController에서 받아온 데이터를 정상적으로 View에 출력하는 작업은 하지않았다.

해보자!!