StoryBoard 사용하기- 03ViewStruct
https://www.inflearn.com/course/ios13-%EC%95%B1%EA%B0%9C%EB%B0%9C-%ED%8F%AC%ED%8F%B4/dashboard inflearn의 코딩강사님 내용 복기용입니다.
화면이동 방법 두가지
1. 네비게이션 컨트롤러 이용(Navigation Controller) - 권장! , 수평이동( 화면이 아얘 넘어가는것)
이때 코드로 이동하는 방법(Push,Pop)과 segue(story에서 끌어서) 로 이동하는 방법 두가지
2. 팝업창으로 이동
간단한 이벤트 화면(로그인,회원가입), 수직이동(간단히 떴다가 사라지는 화면)
코드로 이동(Present, Dismiss),Segue로 이동
Navigation ViewController 사용어
1.다음 화면으로 이동하기
self.navigationController?.pushViewController
2.이전 화면으로 이동하기
popViewController
3.맨 앞으로 이동하기 root뷰로
popToRootViewController
4.특정번째 뷰로 이동하기(2번째, 3번째)
popToViewController(newVC, animated:true)
5.특정뷰를 삭제할때
navigationController?.viewControllers 배열에서 삭제. remove(at:)
6.특정뷰를 중간에 추가할때
navigationController?.viewControllers 배열에서 추가. insert(at:)
뷰 컨트롤러의 수명주기 (Life Cycle)
viewDidLoad : 뷰가 생성될때 한번만 호출됨.(초기화 용도)
viewWillAppear : 뷰가 화면에 보일때마다 호출됨.(화면 갱신 용도)
viewDidAppear : 뷰가 화면에 보이고나서 매번 호출됨.
viewWillDisappear : 뷰가 화면에 사라지기 전마다 호출됨.(데이타 전달)
viewDidDisappear : 뷰가 화면에 사라지고나서 매번 호출됨.
viewWillLayoutSubviews : 컨트롤(서브뷰)들의 레이아웃을 잡기 전에 호출됨.
viewDidLayoutSubviews : 컨트롤들의 레이아웃을 잡고 나서 호출됨.
뷰 컨트롤러 간의 데이타 전달(참조)하는 법
1. 전역변수를 이용한다. (앱내 모든 VC에서 접근 가능)
let appDelegate = UIApplication.shared.delegate as! AppDelegate
전역변수의 가장 스탠다드. 앞으로 계속 사용합니다!
2. A클래스(VC)에서 B클래스로 데이타 전달
3. B클래스에서 A클래스로 데이타 전달
1. segue를 통한 화면이동
object에서 ViewController선택 후 인스펙터 영역의 4번째에서 CustomClass를 선택후 cocoatouch로 생성한 swift를 연결한다.
버튼에 대고 오른쪽 버튼을 누른채 해당되는 SegueViewController 화면으로 드래그 합니다.

Action segue 에서 show 를 클릭하여 연결합니다.
//Action 함수 들어가는 곳
//네비게이션 컨트롤러에서 Segue로 이동하기
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toSecondVC" {
let vc = segue.destination as! SecondeViewController
vc.secondData = "메인화면에서 전달한 데이타(segue)"
}
}
강의중 mainVC와 secondVC를 연결한 코드입니다.
VC를 연결 후 identifier을 설정해주어야 합니다
//네비게이션 컨트롤러에서 코드로 이동하기
@IBAction func onBtnNext(_ sender: UIButton) {
let newVC = self.storyboard?.instantiateViewController(withIdentifier: "SecondVC") as! SecondeViewController
newVC.secondData = "메인화면에서 전달한 데이타"
self.navigationController?.pushViewController(newVC, animated: true)
}
다음은 코드로 연결했을 경우입니다.
identity를 설정해줍니다.