고도고도
🍎🍏
고도고도
전체 방문자
8,030
오늘
0
어제
31
  • 분류 전체보기 (151) N
    • 🔨 프로젝트 (0)
      • TP 1 (0)
      • WhiteHCCTV (0)
      • FootPrint (0)
    • 💻 개발 (44) N
      • TIL (16)
      • Android (6)
      • Kotlin (4)
      • Flutter (9)
      • Node.js (5)
      • Error (4) N
    • ✏️ 알고리즘 (6)
      • Graph (6)
      • String (0)
      • Sort (0)
    • ✍️ 코테 준비 (44)
      • Math (1)
      • Implementation (3)
      • String (3)
      • Brute Force (5)
      • Back Tracking (7)
      • Greedy (0)
      • Dynamic Programming (13)
      • Binary Search (1)
      • DFS, BFS (5)
      • Shortest Path (2)
      • Two Pointer (4)
      • MST (0)
    • 📚 CS (6)
      • Operating System (6)
    • ⛹️ 라이프 (51)
      • 2020 겨울방학 모칵코(팀) (13)
      • 2020 겨울방학 모각코(개인) (13)
      • 2021 여름방학 모칵코(팀) (8)
      • 2021 여름방학 모각코(개인) (7)
      • 코딩 테스트 (1)
      • 회고 (8)

블로그 메뉴

  • 홈
  • 깃허브
  • 링크드인

인기 글

  • [TIL] 22.03.13
    2022.03.13
    [TIL] 22.03.13
  • [문자열 / Kotlin] 2020 KAKAO⋯
    2022.03.11
    [문자열 / Kotlin] 2020 KAKAO⋯
  • [TIL] 22.03.20
    2022.03.20
    [TIL] 22.03.20
  • [퍼듀 일기] 적응 완료
    2022.03.05
    [퍼듀 일기] 적응 완료
  • [구현 / Kotlin] 2022 SK ICT F⋯
    2022.03.12
    [구현 / Kotlin] 2022 SK ICT F⋯

최근 글

  • [Error / Gradle] mockup1/andr⋯
    2022.08.13
    [Error / Gradle] mockup1/andr⋯
  • [NCSOFT] 2022 NC Summer Inter⋯
    2022.08.10
    [NCSOFT] 2022 NC Summer Inter⋯
  • [Flutter] ModalBottomSheet가⋯
    2022.08.09
    [Flutter] ModalBottomSheet가⋯
  • [Error / Gradle] The current⋯
    2022.08.09
    [Error / Gradle] The current⋯
  • [Flutter / Dart] What is Equa⋯
    2022.08.06
    [Flutter / Dart] What is Equa⋯

최근 댓글

  • NC......가슴이...웅장해집니다⋯
    이상한핑구 🐧
  • 고도고도님 멋져요!
    mjj
  • 잘보고 갑니다~
    개갓세
  • 좋은 글이네요
    날인로세
  • 잘 보고 갑니다^^
    프로퍼티
hELLO · Designed By 정상우.
고도고도

🍎🍏

[TIL] 22.06.03 - iOS 화면 전환
💻 개발/TIL

[TIL] 22.06.03 - iOS 화면 전환

2022. 6. 3. 17:39

iOS 에서 화면 이동을 하는 방법에는 4가지가 있다.

  1. ViewController 에서 화면 전환
  2. ViewController 가 다른 ViewController 를 호출하여 화면 전환
  3. NavigationViewController 를 사용하여 화면 전환
  4. 화면 전환용 객체 Segue 를 사용하여 화면 전환

 

1. ViewController 에서 화면 전환

ViewController 위의 View 를 다른 View 로 교체하는 방식으로 메모리 누수로 인해 사용을 지양한다. 특정한 경우에만 사용한다. 안드로이드에서는 View 의 Visibility 속성을 이용하여 변경하는 방식을 자주 사용했었는데 iOS 에서는 지양한다고 하니 좀 신기했다. 이 부분에 대해선 좀 더 찾아보고 정리해봐야겠다.

 

2. ViewController 가 다른 ViewController 를 호출하여 화면 전환

하단에서 View 가 올라오는 Modal 방식에 사용하면 된다. 전환된 화면이 어떤 방식으로 보여질 지에 대한 속성을 정의하면 일반적인 화면 전환처럼 보여줄 수도 있다.

두 개의 ViewController 를 추가

ViewController 를 인스턴스화하는 과정에서 식별자가 사용되기 때문에 스토리보드에서 ViewController 에 대한 식별자를 정의한다.

Storyboard ID를 추가

import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func tapMoveSecondViewController(_ sender: UIButton) {
        guard let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController else { return }
        // 화면 전환 애니메이션 설정
        secondViewController.modalTransitionStyle = .coverVertical
        // 전환된 화면이 보여지는 방법 설정
        secondViewController.modalPresentationStyle = .fullScreen
        self.present(secondViewController, animated: true, completion: nil)
    }
}

이 방법으로 화면 전환을 구현하면 상단에 Back Button 이 구현되어 있지 않다. 따라서 개발자가 별도로 Back Button 을 구현해줘야 한다.

Modal 방식으로 보여줌

 

3. NavigationViewController 를 사용

NavigationViewController를 사용하면 ViewController가 Stack에 쌓인다. 자동적으로 상단 NavigationBar에 BackButton이 추가되기 때문에 2번 방식과 다르게 별도로 Back Button을 구현할 필요가 없다.

Navigation Controller를 검색
Ctrl + 드래그로 Root View를 설정

Navigation Controller를 추가하면 2개의 View 가 추가되는데 Root View 를 제거하고 Navigation Controller 에서 Ctrl + 드래그 를 통해 처음에 보여질 View 와 연결한다. 즉, 기본적으로 생성된 Root View 를 제거하고 새롭게 Root View 를 설정하는 것이다.

 

Root View 설정을 완료했으면 화면 이동으로 보여줄 나머지 View 를 추가한다. 역시 식별자를 추가해주는 것을 잊지 말자!

Storyboard ID를 추가

그 이유는 인스턴스화하는 과정에서 식별자가 사용되기 때문이다.

import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func tapMoveSecondViewController(_ sender: UIButton) {
        guard let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController else { return }
        self.navigationController?.pushViewController(secondViewController, animated: true)
    }
}
import UIKit

class SecondViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func tapMoveThirdViewController(_ sender: UIButton) {
        guard let thirdViewController = self.storyboard?.instantiateViewController(withIdentifier: "ThirdViewController") as? ThirdViewController else { return }
        self.navigationController?.pushViewController(thirdViewController, animated: true)
    }
}

스토리보드에서 추가한 식별자를 가지고 ViewController 를 인스턴스화하고 pushViewController 를 사용해서 화면 전환을 한다.

상단에 NavigationBar가 존재

 

4. Segue를 통한 화면 전환
저작자표시비영리변경금지

'💻 개발 > TIL' 카테고리의 다른 글

[TIL] 22.06.03 - iOS 화면 전환  (0) 2022.06.03
[TIL] 22.05.27  (0) 2022.05.27
[TIL] 22.05.26  (0) 2022.05.26
[TIL] 22.04.20  (0) 2022.04.20
[TIL] 22.04.18  (0) 2022.04.18
[TIL] 22.04.17  (0) 2022.04.17
    '💻 개발/TIL' 카테고리의 다른 글
    • [TIL] 22.05.27
    • [TIL] 22.05.26
    • [TIL] 22.04.20
    • [TIL] 22.04.18
    고도고도
    고도고도
    좋아하는 것을 하자\n 스위프트 찍먹중\n 광고 없는 블로그
    댓글쓰기
    다음 글
    [Android] 백그라운드에서 소켓 통신으로 이벤트 수신 후 알림
    이전 글
    [TIL] 22.05.27
    • 이전
    • 1
    • ···
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • ···
    • 151
    • 다음