Patrick's 데이터 세상

iOS - 씬 구조와 모달 본문

Programming/Swift

iOS - 씬 구조와 모달

patrick610 2020. 6. 24. 21:53
반응형
SMALL

씬 구조


   씬 구조

      스토리보드는 다수의 씬 작성 가능
      씬에 출력하려는 컨텐츠에 맞는 씬 구조 작성
      씬 구성 ; 뷰 컨트롤러


   뷰 컨트롤러의 종류

      커스텀 컨텐츠(Custom Contents) 뷰 컨트롤러 : 컨텐츠 출력 용도의 뷰 컨트롤러
      컨테이너(Container) 뷰 컨트롤러 : 씬 관리

 

   병렬 씬 구조
   마스터 - 디테일 씬 구조
   모달



모달


   모달 씬 사용

      씬의 행위에만 집중
      씬이 제공하는 동작 외 다른 동작을 허용하지 않음


   모달 씬 전환

      세그웨이(segue)를 이용해서 전환
      코드와 세그웨이로 전환
      세그웨이 없이 코드로 전환


   모달 씬 종료

      사용자의 모달 입력 완료 후 종료
      종료를 위한 컨트롤 배치
      씬의 뷰 컨트롤러 클래스 설정
      모달 씬의 뷰 컨트롤러와 타겟-액션 작성      

* 뷰 컨트롤러(UIViewController)
func dismiss(animated flag: Bool, completion: (() -> Swift.Void)? = nil)

* 액션 메소드 예
@IBAction func dismissModal(_ sender: Any) {
   self.dismiss(animated:true, completion: { () -> Void in
      // viewDidDisappear: 이후 동작
   })
}


   
   뷰 컨트롤러와 세그웨이 실행

      * UIViewContoller 클래스

// 세그웨이를 실행
func performSegue(withIdentifier identifier: String?, sender: Any?)

// 세그웨이를 실행 여부를 결정
func shouldPerformSegue(withIdentifier identifier: String?, sender: Any?) -> Bool

// 세그웨이가 실행되기 전에 동작
func prepare(for segue: UIStoryboardSegue, sender: Any?)

 

   씬 전환 준비 API

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   if segue.identifier == "MODAL.SEGUE"{
      let vc = segue.destination as! ModalViewController
      vc.data = "Hello"
   }
}

 

   데이터 전달

      씬 전환 준비 과정에서 데이터 전달
      씬이 화면에 나타나기 전 -> 뷰 생성 안됨
      뷰 컨트롤러의 라이프 사이클 != 뷰의 라이프 사이클

      전환될 컨트롤러에 데이터 프로퍼티 작성
      전달받은 데이터를 출력하려면 뷰 컨트롤러의 라이프 사이클 사용

* 전환될 뷰 컨트롤러에 데이터 주입
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   let vc = segue.destination as! ModalViewController
   vc.data = "Hello"
}

* 전달 받은 데이터를 화면에 출력
class ModalViewController: UIViewController {
   var data : String!
   @IBOutlet var label : UILabel!
   override func viewWillAppear(_ animated: Bool) {
      label text = data
   }
}

 

반응형
LIST

'Programming > Swift' 카테고리의 다른 글

IOS - Realm 모바일 데이터베이스  (0) 2020.06.24
iOS - 앱 구조와 스토리보드  (0) 2020.06.24
iOS - 목록형 씬  (0) 2020.06.24
iOS - 스크롤 뷰  (0) 2020.06.23
iOS - 다이얼로그와 피커  (0) 2020.06.23
Comments