본문 바로가기
inflearn

StoryBoard 사용하기- 03ViewStruct

by 게게겍 2022. 8. 9.

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를 설정해줍니다.

'inflearn' 카테고리의 다른 글

StoryBoard사용하기 - 04LoginJoin  (0) 2022.08.09
StoryBoard 사용하기 - 02MyBasicController  (0) 2022.08.09
storyboard 사용하기- 01FirstApp  (0) 2022.08.09