관리 메뉴

java,javascript,android,php,sql,공부용,메모용

화면전환 개념, UINavigationController, ViewControllor / Xcode SwiftUI 앱맨들기 본문

모바일/SwiftUI ios 공부

화면전환 개념, UINavigationController, ViewControllor / Xcode SwiftUI 앱맨들기

yy_dd2 2021. 12. 1. 14:18
반응형

하려고 하는 것

- LED 전광판 화면 표시

- 표시할 텍스트, 텍스트 컬러, 배경 색상을 화면에서 설정할 수 있게 하기

 

 활용 및 알아갈 내용

- UINavigationController

- 화면 전환 개념

- ViewControllor Life Cycle

- 화면간 데이터 전달 하는 방법

- 에셋 카탈로그 (프로젝트에 리소스를 추가할 수 있는 것)

 


Content View Controller

- 화면을 구성하는 뷰를 직접 구현하고 관련된 이벤트를 처리하는 뷰 컨트롤러

Container View Controller

- 하나 이상의 Child View Controller 를 가지고 있다.

- 하나 이상의 Child View

 

UINavigationController

- 계층 구조로 구성된 content를 순차적으로 보여주는 container view controller

 

Navigation Stack

위로 차곡차곡 쌓아감 A/B/C -> push 쌓임

뒤로가기를 누르면 C가 사라지는 것을 POP(팝)한다고 한다

 

Navigation Bar

화면 상단에 항상 보여지는 바


**

화면 전환 방법

크게 나누면 2가지로 나눌 수 있다

1. 소스코드를 통해 전환하는 방식

2. Storyboard를 통해 전환하는 방식

 

작게는 4가지로 나눌 수 있다

4. 바꿔치기 : View Controller 의 View 위에 다른 View를 가져와 바꿔치기

1. 호출해서 바꾸기 : View Controller에서 다른 View Controller 를 호출하여 전환하기

2. Navigation Controller 를 사용하여 화면 전환하기

3. 화면 전환용 객체 세그웨이(Segueway) 를 사용하여 화면 전환하기 

 

4번은 메모리 누수가 있어 사용하지 않는 방법이라 한다.


1. 호출해서 바꾸기 : View Controller에서 다른 View Controller 를 호출하여 전환하기

1) 현재의 뷰 컨트롤러에서 이동할 뷰 컨트롤러를 직접 호출한다 (프레젠테이션 방법이라고도 한다)

2) 기존 뷰 화면에 새로운 뷰를 덮는 방식

-선언문(Declaration)

Func present(_ viewController: UIViewController, 
		animated flag: Bool, 
                completion: ( () -> Void)? = nil )

- 매개변수(Parameters)

viewControllerToPresent

 현재 뷰 컨트롤러의 컨텐츠 위에 표시할 뷰 컨트롤러

flag

 프레젠테이션을 애니메이션화 하려면 true 그렇지 않으면 flase

completion

 프레젠테이션이 끝난 후 실행할 블록, 이 블록에는 반환 값이 없으면 매개변수를 사용하지 않는다. 매개변수에 대해서 nil을 지정할 수 없다

 

 

-> 이전화면으로 돌아가는 메서드

-선언문(Declaration)

func dismiss(animated flag: Bool, 
		completion: ( ( ) -> Void )? = nil )

- 매개변수(Parameters)

 flag

 프레젠테이션을 애니메이션화 하려면 true 그렇지 않으면 false

completion

 프레젠테이션이 끝난 후 실행할 블록, 이 블록에는 반환 값이 없으면 매개변수를 사용하지 않는다. 매개변수에 대해서 nil을 지정할 수 없다

 

2. Navigation Controller 를 사용하여 화면 전환하기

1) 계층적인 성격을 띄는 컨텐츠 구조를 관리하기 위한 컨트롤러

2) 직접 컨트롤러 앱에 네이게이션 정보를 표시함

3) 네비게이션 스택으로 자식 뷰 컨트롤러를 관리함

4) 선입후출관리 방식

 

-> 네비게이션에 화면을 추가 메서드

-선언문(Declaration)

func pushViewController(_ viewController: UIViewController, 
			animated: Bool )

- 매개변수(Parameters)

viewController

스택에 푸시할 뷰 컨트롤러. 이 개체는 탭 모음 컨트롤러일 수 없다. 뷰 컨트롤러가 이미 탐색 스택에 있는 경우 이 메서드는 예외를 발생시킴

animated

전환 애니메이션 사용 true 사용안함 false

 

-> 네이게이션에서 이전 화면으로 돌아가는 메서드

-선언문(Declaration)

func popViewController(animated: Bool) -> UIViewController?

- 매개변수(Parameters)

animated

 전환 애니메이션 사용 true 사용안함 false

- 반환값 Return Value

 스택에서 꺼낸 뷰 컨트롤러

3. 화면 전환용 객체 세그웨이(Segueway) 를 사용하여 화면 전환하기 

1) 2개의 뷰 컨트롤러 사이에 연결된 화면 전환 객체

2) 스토리 보드를 통해 출발지와 목적지를 직접 연결함

3) 스토리보드만으로 화면을 전환할 수 있다 (코드 없이)

 

- Action Segueway (Trigger)

Show : 일반적인것, 화면전환 시 네이게이션 스택에 쌓이고 사용하지 않으면 사라짐
Show Detail :
아이폰과 아이패드와 사용하면 다르다 (디테일이다름)

Present Modally : 이전 컨트롤러를 덮고 새로운 화면이 나옴 프레젠테이션 화면전환과 같음

Present As Popover  : 팝업창을 띄울 때 사용 (아이폰에서 사용 안함)

Custom : 원하는 방향으로 커스텀

 

- Manual Segueway

출발점이 뷰 컨트롤러 자체인 경우

반응형
Comments