본문 바로가기

iOS/swift

[swift] 컨트롤러간 화면 전환

반응형

1. 뷰 컨트롤러 연결

- 이동

vc = self.storyboard?.instantiateController(withidentifier: "") as DetailController
self.present(vc, animated: true, completion: nil)


- 돌아오기

self.presentingController?.dissmiss(animated: true)

 

2. 네비게이션컨트롤러 연결

- 이동

vc = self.storyboard?.instantiateController(withidentifier: "") as DetailViewController
self.navigationViewController?.pushViewController(vc, animated: true)


- 돌아오기

self.navigationViewController?.popViewController(animated: true)


3. 세그웨이 연결

전달인자가 있어서 원하는 정보 전달이 가능(인자:sender)

- 이동

self.performSegue(withidentifier: "", sender: self)


버튼을 누르면 Segue가 발동 되도록 아래와 같이 선언함 

@IBAction func moveVC(_ sender: UIButton) {
	performSegue(withIdentifier: “move”, sender: self)
}


Segue 수행 전 해야하는 작업 :

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
	//전환전 해야 할 일
}


# Segue의 종류

세그웨이를 할 때는 늘 새로운 인스턴스 객체가 생성된다는 것을 주의해야 합니다.

show : 가장 일반적인 세그웨이입니다. 새로운 화면으로 이동합니다. Stack구조로서 새 화면이 원래 화면 위를 덮는 구조입니다.
Show DetailSplitView : 구조에서 원래 화면을 Master, 새 화면을 Detail로 표시합니다. 아이폰에서는 똑같아 보이지만 아이패드에서는 화면이 둘로 분할돼서 보이게 됩니다.
Present Modally : 새 화면이 모달처럼 원래 화면 위 전체를 뒤덮습니다. 원래 화면은 새 화면 뒤에 그대로 존재하게 됩니다.
Popover Presentation : 아이패드에서 팝업창을 띄웁니다. 아이폰 앱한테는 Show Detail과 마찬가지로 큰 의미가 없습니다.
Custom : 사용자 정의 세그웨이를 만듭니다.

- 돌아가기
돌아갈 목적지 ViewController에서 아래와 같이 선언함

@IBAction func unwindVC (segue : UIStoryboardSegue) {}

1) storyboard을 열고 컴파일되어 휴대폰에서 구동중일 때 실제 화면에 표시되고 있는 viewController에서 control키를 누른채로 viewController 아이콘에서 Exit로 끌어서 이동하면 위의 함수(unwindVC함수)가 나타나고 선택함
2) 만들어진 UnWind segue를 선택하고 Storyboard Unwind Segue에서 identifier 이름(unwind)을 설정해줌

3) 버튼을 누르는 작업을 처리하는 함수에서 segue 이동 함수를 안에 넣음

@IBAction func unwindVC(_ sender: UIButton) {
	performSegue(withIdentifier: “unwind”, sender: self)
}

 

- 실제 프로그래밍하는 화면 동영상

 

반응형

'iOS > swift' 카테고리의 다른 글

[swift] view memory 화면 설명  (0) 2021.08.09
[swift] Dictionary initializer with grouping  (0) 2021.08.06
[swift] UICollectionView 사용법  (0) 2021.08.01
GCD(Grand Central Patch)  (0) 2020.07.18
URLSession  (0) 2020.07.04

]