뷰컨트롤러 인스턴스를 그냥 불러오면 뷰컨트롤러 안에는 UI요소들이 없기때문에 껍데기만 불러와진다.
따라서 storyboard ID와 storyboard name 을 이용해서 storyboard 객체를 통해 instantiateViewController를 사용하여 UI요소까지 불러와야한다.
storyboard ID == identifier 이다.
func presentStockModifyView() {
let stockModifyNavController = StockModifyNavController()
let storyboard = UIStoryboard(name: stockModifyNavController.storyboardName, bundle: nil)
let stockModifyNC = storyboard.instantiateViewController(identifier: stockModifyNavController.storyboardID)
//네비게이션 컨트롤러를 띄우는 방식 두가지
//1. 모달로 띄우기
present(stockModifyNC, animated: true, completion: nil)
//2. 네비게이션으로 띄우기
navigationController?.show(stockModifyNC, sender: nil) //새로운 방식
navigationController?.pushViewController(stockModifyNC, animated: true) //deprecated 방식 - 에러남: Navigation controller 못가져와서
}
에러 : 뷰컨트롤러 인스턴스를 그냥 불러올 경우
그렇지만 코드로 UI를 구현했으면 이 방식도 사용 가능
func presentStockModifyView() {
let stockModifyNavController = StockModifyNavController()
show(stockModifyNavController, sender: nil) //새로운 방식
}
유용한 링크 : [iOS] View Controller 생성 관련 메소드 정리 - instantiateViewController & viewDidLoad