티스토리 뷰
스위프트에서 다음과 같은 방법으로 화면전환이 가능합니다.
1. Segue 사용
2. ViewController가 다른 ViewController 호출 (present)
3. NavigationController를 사용한 전환
view 를 바꿔치기 하는 방법도 있으나 overflow의 위험이 있어 잘 쓰지 않는다고 합니다.
이 포스트에서는 위에 3가지에 대해서만 알아보겠습니다.
1. Storyboard에서 직접연결
다음과 같은 화면이 있습니다. 버튼을 누르면 이동하게 만들어 볼까요?
먼저 뷰 컨트롤러를 하나 추가해주세요.
뷰 컨트롤러를 추가했습니다. 이제 두개를 연결해야 합니다.
Button에서 Control을 누른채로 드래그해서 오른쪽 뷰컨트롤러에 놓아주세요.
다음과 같은 창이 뜨게 됩니다.
여기서 Show 를 눌러줍니다.
중간에 연결선이 보이시나요?
이렇게 되면 정상적으로 연결되었습니다.
이제 버튼을 누르면 화면전환이 가능합니다.
여기서 잠깐,
Control을 누르고 드래그 했을때, Action Segue라는 창이 떴었죠?
1. Show
2. Show Detail
3. Present Modally
4. Present As Popover
5. Custom
모두 화면전환이 가능하지만 각각 다른 기능한다는 것만 알아두고
Segue(세그웨이)에 대해서는 다음에 알아보도록 하겠습니다.
2. ViewController가 다른 ViewController 호출 (present)
이 방법은 다른 ViewController를 Modal로 띄우는 방법입니다.
다음과 같은 코드를 작성합니다.
guard let vc= self.storyboard?.instantiateViewController(withIdentifier: "vc") as? DetailViewController else { return }
vc.num1 = 10
self.present(vc, animated: true)
vc.num1 = 10 는 DetailViewController의 num1 에게 10이라는 값을 화면전환전에 설정해줍니다.
하지만 이것만 작성하게 되면 컴파일시에는 아무문제가 없으나 실행 후 버튼 클릭시 에러가 발생하게 됩니다.
이유는 Storyboard의 id 값이 없기 때문인데,
ViewController선택 후 identity Inspector로 이동하면 Identity에 Storyboard ID라는 항목이 보입니다.
여기에 id 값을 입력해 주세요.
이렇게 하면 이제 에러없이 정상적으로 동작하게 됩니다.
3. NavigationController를 사용한 전환
네비게이션을 통한 이동은 코드상으로는 크게 차이가 없습니다.
네비게이션 구조특성상 Stack구조로 push/pop을 사용합니다.
guard let vc= self.storyboard?.instantiateViewController(withIdentifier: "vc") as? DetailViewController else { return }
self.navigationController?.pushViewController(vc, animated: true)
다만, 네비게이션 뷰를 사용하기 위해서는 NavigationController를 추가해주어야 합니다.
스토리보드에서 [Editor] - [Embed In] - [Navigaition Controller] 를 차례대로 실행해 주세요.
추가되었습니다.
이렇게 하면 상단에 툴바가 생성됩니다.
오른쪽 화면에도 Back 이라는 버튼이 생겼습니다.
NavigationController를 추가하고 화면전환을 하게 되면 오른쪽 화면의 Back버튼으로 다시 돌아오는게 가능해집니다.
각각의 심화내용은 다음 포스팅에서 알아보겠습니다.
'iOS > Swift' 카테고리의 다른 글
[Swift] 반복문 (1) for 사용하기 (0) | 2020.08.27 |
---|---|
[Swift] AlertDialog 만들기 (0) | 2020.07.31 |
[Swift] 함수 (0) | 2020.07.17 |
[Swift] 상수와 변수 (0) | 2020.07.09 |
[Swift] 입문하기 (0) | 2020.07.08 |
- Total
- Today
- Yesterday
- 격파르타 후기
- 코틀린
- Swift
- rotation
- 자바
- ~=
- .toml
- Xcode
- IOS
- FLUTTER
- 버전카타로그
- 안드로이드
- sqld 자격증 합격
- 아이폰앱개발
- Android
- gem update
- Kotlin
- 격파르타 합격후기
- 스위프트
- dart
- 변수
- 아이폰
- rotate
- NoAnimation
- 격파르타 장점
- Java
- toml
- 음성재생
- 함수
- 연산자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |