트러블 슈팅 코인 상세 - donggeonoh/bithumb-techcamp-ios-1st GitHub Wiki
1. 화면 전환시 데이터 전달 방법(페이지 뷰 컨트롤러) - 허황
상세화면에서 페이지 뷰 컨트롤러를 사용하고 있습니다. 페이지 뷰 컨트롤러 자식 뷰 컨트롤러(차트, 호가, 체결 내역)에게 코인의 심볼을 전달하는데 고민이 많았습니다.
방법 1. 페이지 뷰 컨트롤러의
setViewController()
메서드에서 자식 뷰 컨트롤러를 화면에 표시할 때 데이터를 전달해주는 방법을 사용하려고 했으나setViewController()
메서드가 호출될 때마다 데이터를 전달하기 때문에 사용할 수 없었습니다.방법2.
PageViewControllerable
프로토콜 내부에configureViewController(coinSymbol: String)
정의 페이지 뷰 컨트롤러의 자식 뷰 컨트롤러들에게 채택해준 후 페이지 뷰 컨트롤러가 인스턴스화 될때 자식 뷰 컨트롤러들의configureViewController(coinSymbol: String)
메서드를 호출하는 방법도 생각했습니다. 메서드 호출은 잘 됐지만, 자식 뷰 컨트롤러들의 뷰가 그려지지 않은 시점에서configureViewController(coinSymbol: String)
호출하고 네트워크를 통해 데이터를 가져와 뷰에 반영하려해서 런타임 오류가 발생했습니다.방법 3. 방법 2를 응용한 방법으로
PageViewControllerable
프로토콜 내부에 클로져를 정의하고 페이지 뷰 컨트롤러가 인스턴스화 될때 해당 클로져에configureViewController(coinSymbol: String)
을 담아주고 자식 뷰 컨트롤러들의 viewDidLoad() 내부에서 해당 클로저를 호출하는 방식으로 개선했습니다.방법 3을 사용하게 되면 페이지 뷰 컨트롤러의 자식 뷰 컨트롤러들이 인스턴스화 될 때 뷰를 정상적으로 그리고 난 후 데이터를 받아올 수 있기 때문에 문제가 발생하지 않았습니다.