[UIKit]Segue

iOSoo·2021년 9월 9일
0
post-thumbnail

Segue란?

: storyboard에서 앱의 인터페이스 흐름을 나타내는 객체이다.

: 즉, 스토리보드에서 View Controller간의 이동을 나타내는 화살표를 추상시킨 것

Segue 연결하는 3가지 방법

1. storyboard에서 직접 연결하기

  • Ctrl키를 누른 상태에서 Button 또는 View를 누르고 연결한 Veiw Controller에 Drag-and-drop을 하면 Action Segue창이 나오고 원하는 옵션을 선택하여 설정할 수 있음.

2. performSegue 메소드를 이용하여 연결하기(storyboard + code)

  • 이 부부은 아직 잘 모르는 부분이라 생략.
  • 알게 되면 수정하겠음.

3. code로 정의하기

  • withIdentifier의 "ResultViewController" 부분은 두 번째 view Controller의 Identifier이고 그 뒤 ResultViewController는 class 이름.

Segue를 연결하면 아래와 같은 프롬프트가 띄워짐.

[Manual Segue: 사용자의 특정 행동 등의 외부적인 요인에 의해서 수동적으로 동작하게 되는 Segue

  • Show(push)
    : 대부분의 경우는 present modally로 동작하지만, 일부 뷰컨트롤러는 이 메소드를 오버라이드 해서 다른 동작을 취하기도 함.
    : navigationController는 새로운 뷰컨트롤러를 스택에 push함.
    : UIKit은 targetViewController(forAction:sender:) 메소드를 이용해 다음 뷰컨트롤러를 띄워줄 뷰컨트롤러를 찾게 된다. 해당 메소드는 뷰컨트롤러 계층을 올라가면서 show(:sender:)를 오버라이드한 뷰컨트롤러를 찾게 되는데(해당되는 컨트롤러는 navigation,splitView 등이 있다) 찾을 경우 반환된 뷰컨트롤러의 show(:sender)를 이용하고, 찾지 못할 경우 nil을 반환하여 present(:animated:completion:)을 사용하게 한다.

  • showDetail(Replace)
    : UISplitViewController에서만 사용하는 것으로 SplitView의 두번째 자식 뷰컨트롤러(detail Controller)를 바꿔줌.
    : 다른 뷰컨트롤러를 대상으로 하는 경우에는 present(:animated:completion:)로 동작함.

  • Present Modally
    : 정해진(혹은 사용자가 설정한) presentationStyle과 transitionStyle에 따라 Modal하게 뷰 컨트롤러를 띄운다.
    : presentationStyle에 따라 현재 뷰컨트롤러가 적절하지 않을경우에는 뷰컨트롤러 계층을 따라가면서 적절한 뷰컨트롤러를 발견했을 때 실제로 presentation이 실행된다.
    (ex - presentation style이 fullscreen인 경우, 화면 전체를 덮는 뷰를 가진 뷰컨트롤러만이 present를 실행할 수 있다.)

  • Present as Popover
    : 가로 길이가 regular 사이즈인 경우에는 popover로 띄우지만, 가로 길이가 compact 사이즈인 경우는 전체화면 Modal과 같아진다

[Relationship Segue: 이름 그대로 관계를 맺어주기 위한 Segue]

  • root view controller(view controller)
    : 특정 뷰 컨트롤러와 컨트롤러간의 관계를 연결하는 용도
    : NavigationController 의 root view controller 를 설정 -> NavigationController 의 가장 기본적인 화면으로, 조금 전 새로 만든 ViewController 를 설정이라는 의미.

[Non - Adaptive Manual Segue Segue: 더 이상 사용되지 않으며 화면 크기와 방향에 적응하지 않는 Segue]

  • Push

  • Modal

[참고]


https://deliorange.tistory.com/25
https://jcsoohwancho.github.io/2019-07-28-Segue-%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0/
https://gcempire.tistory.com/504

profile
애플을 좋아하는 비전공생

0개의 댓글