itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 독립서점
  • SWIFT
  • nosql
  • SwiftUI
  • 킨디
  • binding
  • ios
  • crud
  • 연결리스트
  • POSTECH
  • CS
  • 생활코딩
  • 생활코딩 #이고잉 #HTML #코딩 #개발자
  • CoreData
  • mongodb
  • 세그멘테이션
  • 어플
  • 개발자
  • 점주
  • AppleDevloperAcademy

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

[iOS 앱 프로그래밍] 회원가입 화면 구현 - 2. 화면의 전환 (1) 내비게이션 인터페이스
iOS/Swift

[iOS 앱 프로그래밍] 회원가입 화면 구현 - 2. 화면의 전환 (1) 내비게이션 인터페이스

2021. 8. 9. 19:15

내비게이션 인터페이스

iOS 애플리케이션에서 화면전환을 위해 사용되는 여러 기법 중 하나. iOS에서 내비게이션 인터페이스는 주로 계층적 구조의 화면전환을 위해 사용되는 드릴 다운 인터페이스(drill-down interface)이다. 드릴 다운 인터페이스란 아래 그림과 같이 각 선택할 수 있는 항목에 대한 세부항목이 존재하는 인터페이스이다.

어떻게 구현하나? by 내비게이션 컨트롤러

 

내비게이션 컨트롤러의 mechanism : stack 개념

내비게이션의 컨트롤러는 2가지 뷰 요소를 화면에 띄운다 -> 컨텐트 뷰 & 내비게이션 바

- 내비게이션 컨트롤러 생성

// 내비게이션 컨트롤러의 인스턴스를 생성하는 메서드입니다.
// 매개변수로 내비게이션 스택의 가장 아래에 있는 루트 뷰 컨트롤러가 될 뷰 컨트롤러를 넘겨줍니다.
init(rootViewController: UIViewController)

 

 

내비게이션 스택은 내가 알고 있는 stack의 개념과 동일하다. 스택에 요소를 추가하면 최상단에 그 요소가 쌓이고 이전의 것들은 스택에 담겨있다. 다만, 여기서 주의할 점은 스택을 맨 처음 생성할 때 최하단에 루트 뷰 컨트롤러가 존재해야 한다

 

- 내비게이션 스택의 뷰 컨트롤러에 대한 접근

// 내비게이션 스택에 있는 최상위 뷰 컨트롤러에 접근하기 위한 프로퍼티입니다.
var topViewController: UIViewController?

// 현재 내비게이션 인터페이스에서 보이는 뷰와 관련된 뷰 컨트롤러에 접근하기 위한 프로퍼티입니다.
var visibleViewController: UIViewController?

// 내비게이션 스택에 특정 뷰 컨트롤러에 접근하기 위한 프로퍼티입니다.(루트 뷰 컨트롤러의 인덱스는 0 입니다.)
var viewController: [UIViewController]

스택이기 때문에 push/pop으로 뷰 컨트롤러(아이템, 요소)들을 관리한다.

- 내비게이션 컨트롤러의 push와 pop의 메소드

// 내비게이션 스택에 뷰 컨트롤러를 푸시합니다.
// 푸시 된 뷰 컨트롤러는 최상위 뷰 컨트롤러로 화면에 표시됩니다.
func pushViewController(UIViewController, animated: Bool)

// 내비게이션 스택에 있는 최상위 뷰 컨트롤러를 팝합니다.
// 최상위 뷰 컨트롤러 아래에 있던 뷰 컨트롤러의 콘텐츠가 화면에 표시됩니다.
func popViewController(animated: Bool) -> UIViewController?

// 내비게이션 스택에서 루트 뷰 컨트롤러를 제외한 모든 뷰 컨트롤러를 팝합니다.
// 루트 뷰 컨트롤러가 최상위 뷰 컨트롤러가 됩니다.
// 삭제된 모든 뷰 컨트롤러의 배열이 반환됩니다.
func popToRootViewController(animated: Bool) -> [UIViewController]?

// 특정 뷰 컨트롤러가 내비게이션 스택에 최상위 뷰 컨트롤러가 되기 전까지 상위에 있는 뷰 컨트롤러들을 팝합니다.
func popToViewController(_ viewController: UIViewController, 
		animated: Bool) -> [UIViewController]?

 

화면 이동 = 최상단 뷰 컨트롤러 추가 또는 삭제 

화면 이동 : 코드로 구현, 사용자가 직접

1. 코드로 구현 : UINavigationController 클래스의 메소드 활용 or 세그(Segue)

2. 사용자 : back 버튼 or 왼쪽 가장자리 스와이프

 

화면 이동 시 새로운 화면으로 가면 스택에 뷰 컨트롤러2가 쌓인다. 그리고 이전 화면으로 가면 스택에서 뷰 컨트롤러2가 pop(삭제)되고 뷰 컨트롤러1의 화면이 나온다. (맨 밑에는 루트 뷰 컨트롤러가 존재한다)

 

 

PUSH와 POP을 누르면 각각 서로의 화면으로 이동한다.

 

PUSH를 누르면 오른쪽 화면으로 이동하는데 오른쪽 화면에 대한 코드 정보가 담긴 파일을 하나 새로 만들어 줘야 하고 오른쪽 화면과 새 파일의 클래스를 연결시켜주어야 오른쪽 화면을 통제하고 조작할 수 있다.

 

    @IBAction func popToPrev() {
        self.navigationController?.popViewController(animated: true)
    }

POP을 누르면 왼쪽 화면으로 가는 함수 코드이다.

저작자표시 (새창열림)

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

[iOS - Swift] static func vs func  (0) 2023.03.06
[Swift] Struct, Initializer (구조체와 이니셜라이저)  (0) 2022.05.10
[iOS 앱 프로그래밍] 회원가입 화면 구현 - 1. H.I.G  (0) 2021.08.09
[iOS 앱 프로그래밍] 음원 재생기 애플리케이션 - 6. MVC  (0) 2021.08.08
[iOS 앱 프로그래밍] 음원 재생기 애플리케이션 - 5. iOS의 View 체계  (0) 2021.08.08
    'iOS/Swift' 카테고리의 다른 글
    • [iOS - Swift] static func vs func
    • [Swift] Struct, Initializer (구조체와 이니셜라이저)
    • [iOS 앱 프로그래밍] 회원가입 화면 구현 - 1. H.I.G
    • [iOS 앱 프로그래밍] 음원 재생기 애플리케이션 - 6. MVC
    itisjustK
    itisjustK

    티스토리툴바