티스토리 뷰


Interface Builder Annotation 

interface Builder를 줄여서 IB라고 붙이며, Outlet은 콘센트 개념, Action은 동작 개념

 

@IBAction 

유저의 특정 이벤트 (터치, 드래그, 편집 등등) 감지해서 Controller에게 알리는 역할

특정 이벤트 발생 시 실행될 동작들을 정의

@IBOutlet 

처리 결과를 View에 알리고 원하는 동작을 이끔

View에 존재하는 요소와 Controller를 연결하기 위한 변수 개념

 

* @는 At Symbol의 뜻으로 코드 자체의 특성을 가리킬 때 사용한다.

   컴파일러에게 "나는 어떤 속성이야!" 라고 전하는 역할을 하는 예약어이다.


화면 전환

모달

  • 특정 위치를 누르면 새로운 창이 기존 창 위에 뜨는 것
  • 사용자의 이목을 끌기 위해 사용하는 화면전환 기법
  • 화면을 전환한다는 느낌보다는, 사용자들에게 이목을 집중해야 하는 화면을 띄우는 방식
  • Alert (사용자에게 정보를 물어보거나 확인시킴)
  • Action Sheet (사용자에게 선택지를 고르게 하는)
  • Activity Views (공유 옵션을 정할 수 있는 (Share Sheet))
  • Modal View (새로운 뷰를 띄울 수 있는) 

 

네비게이션 

  • 특정 버튼을 누르면 화면이 오른쪽으로 넘어가는 것

Seque를 통한 화면 전환

스토리보드를 통해 출발지와 목적지를 직접 이어주는 방식

 

1. Show

  • Navigation Controller가 연결되어 있다면 Push 처리
  • 아닌 경우 Present Modally 처리

2. Show Detail

  • 아이패드에서 사용하는 방식
  • Push가 아닌 Replace 방식을 사용

3. Present Modally

  • Present 방식 전환
  • Modal Style, Transition Style을 변경해서 다양한 방식이 가능

4. Popover Presentation

  • 아이패드에서 사용되는 전환 방식
  • 작은 Popup 형태의 뷰를 띄움

코드를 통한 화면 전환 - Modality

guard let nextVC = self.storyboard?.instantiateViewController(identifier: "SecondViewController") 
					as? SecondViewController else { return }
    self.present(nextVC, animated: true, completion: nil)
    
    1. self.storyboard?
    나의 스토리보드에서
    
    2. instantiateViewController(identifier: "SecondViewController")
    이런 identifier를 가진 ViewController를 인스턴스로 생성하겠다 !
  	
    3. as? SecondViewController
    SecondViewController 클래스형으로 여겨달래 (타입 캐스팅)
    
    4. else { return }
    앞에서 nil로 떨어지면 else로 빠져서 탈출!
    
    5. let nextVC 
    값이 nil로 빠지지 않고, 정상적으로 넘어왔다면 nextVC로 저장!

 

* guard 를 활용한다면, 해당 조건을 검사하고 해당 조건이 참이라면 그냥 통과하지만 조건이 false 인 경우에는 바로 else 로 떨어져서 종료 구문을 실행한다. 

   else 에는 반드시 break 나 return 같은 종료 구문이 존재해야 함.

 

* swift 애서는 보통 guard-let 구문을 많이 활용해서 해당 변수가 nil값인지 아닌지를 판단하고, 해당 값이 nil이 아니라면 코드가 계속 실행되며,

   해당 변수가 nil로 떨어지면 else로 구문을 이동해 처리하게 된다 .

 

 

Style

(뷰컨인스턴스).modalPresentationStyle
.automatic 
 시스템에서 정한 기본 옵션 (현재 하는 방식)
.fullScreen 
 위를 남기지 않고 새로운 모달로 창을 덮는 방식
.overCurrentContext
 새로운 모달창이 투명한 경우, 아래에 깔려 있는 이전 뷰도 함께 보임
 
 
(뷰컨인스턴스).modalTransitionStyle
.coverVertical
 우리가 처음 본 것 처럼, 아래에서 나와 뷰를 올리는 형식
.crossDissolve
 뷰가 교차되면서 샤르르 전환된다.

 

현재 present로 띄워진 뷰를 사라지게 하는 메서드

self.dismiss(animated: true, completion: nil)

 


코드를 통한 화면 전환 - Navigation

drill down interface, 깊이와 흐름을 나타내기 위해 사용하는 구조

 

네비게이션의 3가지 주요 스타일

 

 

 

 

 

 

 

 

계층 네비게이션

  • 각 화면마다 다른 화면으로 갈 수 있는 선택지 1개를 골라야 함.
  • 선택지별로 계층 구조가 존재함.
  • ex) 설정, 메일

 

플랫 네비게이션

  • 큰 카테고리 내에서 화면을 전환
  • 주로 탭바를 사용하는 형태
  • ex) 앱스토어, 음악

 

경험적 중심 네비게이션

  • 몰입감을 중요시하는 서비스나 게임에서 사용
  • 계층 / 플랫을 섞어서 혼합 네비게이션 사용 가능

 

Navigation Controller

- 뷰 컨트롤러 사이 계층 구조를 탐색할 수 있게 해주는 객체

   자식 뷰를 Navigation Stack에 쌓고 관리하는 방식

 

- 네비게이션 자체가 화면에 대한 관리를 담당하기 때문에,
   네비게이션 컨트롤러는 화면을 나타내주는 뷰 컨트롤러를 관리하는 역할을 하게 됨

 

- 가장 먼저 스택에 추가된 뷰컨이 Root View Controller가 됨
   이후에 쌓인 뷰컨들은 아래에서부터 차곡차곡 쌓임

 

- pop : 가장 위에 있던 뷰 컨트롤러가 빠짐
  push : 가장 최근 뷰컨이 최상단에 쌓이게 됨

 

//push
self.navigationController?.pushViewController(nextVC, animated: true)

//pop
self.navigationController?.popViewController(animated: true)

'Sopt 28th 세미나 - iOS' 카테고리의 다른 글

[Swift] TableView 개념  (0) 2021.08.14
[Swift] 데이터 전달  (0) 2021.08.14
[Swift] 시작하는 스토리보드 바꾸는 방법  (0) 2021.08.14
[Swift] ViewController 생명주기  (0) 2021.07.22
[Swift] HIG 알아보기  (0) 2021.07.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함