개발/Swift
[Swift] ViewController Custom Init (parameter 전달)
덤벨로퍼
2022. 8. 29. 16:35
Modern Collection View 와 MVVM 패턴 가이드
[iOS] Modern Collection View & MVVM 패턴 가이드 - 인프런 | 강의
MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., - 강의 소개 | 인프런
www.inflearn.com
ViewController Custom Init (parameter)
코드로 UI 를 짜는경우는 이렇게 사용할수있다.
init(viewModel: MonitoringViewModel) {
self.monitoringViewModel = viewModel
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
스토리 보드를 쓰지 않기떄문에 required init?(coder: NSCoder)
이부분이 불리지 않을것이다.
하지만 스토리보드로 UI를 사용했다면
storyboard.instantiateViewController(withIdentifier: "viewController")
이렇게 스토리보드 에서 뷰컨트롤러를 init 하게되고
required init?(coder: NSCoder) 이 실행된다.
이 부분은 거스를수가 없어 결국 init을 커스텀하는것이 불가능하다.
init 이후에 viewDidload()가 불리게 될텐데
따라서 뷰컨에 파라미터를 지정해주기 위해서는 init -> viewdidLoad() 이후
파라미터를 세팅해주는것 말고는 답이없다.
let viewController = storyboard.instantiateViewController(withIdentifier: "viewController")
viewController.viewModel = ViewModel()