Dismissing a View Controller with an Unwind Segue
"Configure an unwind segue in your storyboard file that dynamically chooses the most appropriate view controller to display next."
다음에 표시할 가장 적합한 뷰 컨트롤러를 동적으로 선택하는 언와인드 세그를 스토리보드 파일에서 설정합니다.
Overview
뷰 컨트롤러의 해제를 처리하려면 언와인드 세그를 생성해야 합니다. 뷰 컨트롤러르 제시하기 위해 사용하는 세그와 다르게 언와인드 세그는 전환 결과로 나타나는 구체적인 목표에 대한 약속 없이 현재 뷰 컨트롤러의 해제만을 약속합니다. 대신 UIKit
은 런타임에 프로그래밍 방식으로 언와인드 세그의 목표를 결정합니다.
UIKit
은 런타임에 언와인드 세그의 목표를 결정합니다. 그렇기에 뷰 컨트롤러 계층구조 설정에 대한 방법에 제한되지 않습니다. 아래 그림에서 보여지는 것처럼 같은 자식 뷰 컨트롤러를 제시하는 두 뷰 컨트롤러에 대한 시나리오를 생각해볼 수 있습니다. 다음에 표시할 뷰 컨트롤러가 무엇인지 결정하기 위해 복잡한 로직을 추가할 수 있습니다. 그러나 이와 같은 해결방법은 잘 확장되지 않습니다. 대신 UIKit
은 최소한의 노력으로 모든 수의 뷰 컨트롤러로 확장할 수 있도록 하는 프로그래밍 방식의 간단한 해결방법을 제공합니다.
Define an Unwind Action on a Parent View Controller
언와인드 세그 액션 메소드의 존재는 UIKit
에게 뷰 컨트롤러는 언와인드 세그에 대한 잠재적 목적지라는 것을 알려줍니다. 스토리보드에서 언와인드 세그를 설정하기 전에 적어도 하나의 뷰 컨트롤러에 이 액션 메소드를 추가해야 합니다. 만약 뷰 컨트롤러가 언와인드 액션을 갖지 않는다면, Xcode는 언와인드 세그 생성을 막습니다. 이 액션 메소드는 아래와 같은 형식입니다.
@IBAction func myUnwindAction(unwindSegue: UIStoryboardSegue)
액션 메소드에 특별하게 무엇인가를 할 필요는 없습니다. 이 메소드의 존재는 현재 뷰 컨트롤러를 해제하기에 충분합니다. 그러나 해제 프로세스가 진행되는 동안 관련 작업을 수행하기 위해 이 메소드를 사용할 수도 있습니다. 예를 들어 해제되는 뷰 컨트롤러에서 다시 부모 뷰 컨트롤러(해제되는 뷰 컨트롤러를 제시했었던)로 데이터를 전달하는 경우가 있습니다. 만약 그렇게 해야 한다면, 시작과 끝의 뷰 컨트롤러를 회수하기 위해 UIStoryboardSegue
객체를 사용할 수 있습니다.
Connect a Triggering Object to the Exit Control
스토리보드에서 trigeering 객체에 우클릭하고 뷰 컨트롤러 씬의 상단에 있는 Exit
컨트롤에 드래그함으로써 언와인드 세그를 생성할 수 있습니다. 뷰 컨트롤러에 있는 컨트롤 혹은 제스처 리코그나이저와 같은 타깃-액션 디자인 패턴을 지원하는 모든 객체로부터 세그를 생성할 수 있습니다.
객체를 Exit
컨트롤에 연결하는 경우 UIKit
은 알고 있는 액션 메소드의 리스트를 제시합니다. 언와인드 세그를 완료하기 위해 하나의 액션 메소드를 선택하시기 바랍니다. 단지 액션 메소드만 선택하고 특정 뷰 컨트롤러는 선택하지 않습니다. 해제 이후에 표시되려면 부모 뷰 컨트롤러는 선택한 메소드를 구현해야 합니다.
사용자가 해제 액션을 시도하면, UIKit
은 지정한 액션 메소드를 구현하는 뷰 컨트롤러를 현재 뷰 컨트롤러 계층구조에서 탐색합니다. 가장 가까운 뷰 컨트롤러를 탐색하며, 직계 부모로부터 시작합니다. 그리고 적합한 목표를 발견하기까지 뷰 컨트롤러 계층구조를 흐름에 따라 탐색합니다. 해당 메소들르 구현한 뷰 컨트롤러를 찾지 못하는 경우 언와인드 세그는 조용히 실패하고 현재 뷰 컨트롤러가 화면에 남습니다.
See Also
Storyboards
Customizing the Behavior of Segue-Based Presentations
세그가 일어나는 동안 뷰 컨트롤러 사이에 데이터를 전달합니다. 그리고 세그 발생 시 코드 내용으로 제어합니다.
https://developer.apple.com/documentation/uikit/resource_management/customizing_the_behavior_of_segue-based_presentations
https://velog.io/@panther222128/Customizing-the-Behavior-of-Segue-Based-Presentations
UIStoryboard
인터페이스 빌더 스토리보드 리소스 파일에서 표현되는 디자인 타임 뷰 컨트롤러 그래프의 캡슐화입니다.
https://developer.apple.com/documentation/uikit/uistoryboard
https://velog.io/@panther222128/UIStoryboard
UIStoryboardSegue
두 뷰 컨트롤러 사이에서 시각적 전환을 준비하고 수행하는 객체입니다.
https://developer.apple.com/documentation/uikit/uistoryboardsegue
https://velog.io/@panther222128/UIStoryboardSegue
UIStoryboardUnwindSegueSource
언와인드 세그에 대한 정보의 캡슐화입니다.
https://developer.apple.com/documentation/uikit/uistoryboardunwindseguesource
https://velog.io/@panther222128/UIStoryboardUnwindSegueSource
Author And Source
이 문제에 관하여(Dismissing a View Controller with an Unwind Segue), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@panther222128/Dismissing-a-View-Controller-with-an-Unwind-Segue저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)