Patrick's 데이터 세상
iOS - 씬 구조와 모달 본문
반응형
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