간단히 말해서
언 와인드 SEGUE (라고도 종료 SEGUE는 (당신이 탐색 모음에서 탐색 항목을 불쑥 들어 갔던 팝 오버를 폐쇄 또는 모달 발표 뷰 컨트롤러를 기각 것처럼)) 푸시, 모달 또는 팝 오버 segues를 탐색 뒷면에 사용할 수 있습니다. 또한 하나의 풀기 동작으로 탐색 계층에서 여러 단계를 "뒤로 이동"하는 것과 같이 일련의 푸시 / 모달 / 팝 오버 segue를 실제로 풀 수 있습니다.
풀기 segue를 수행 할 때는 풀려는 뷰 컨트롤러의 작업 방법 인 작업을 지정해야합니다.
목표 -C :
- (IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue
{
}
빠른:
@IBAction func unwindToThisViewController(segue: UIStoryboardSegue) {
}
이 조치 방법의 이름은 스토리 보드에서 풀기 segue를 작성할 때 사용됩니다. 또한이 메소드는 unwind segue가 수행되기 직전에 호출됩니다. 전달 된 UIStoryboardSegue
파라미터 에서 소스 뷰 컨트롤러 를 가져 와서 segue를 시작한 뷰 컨트롤러와 상호 작용할 수 있습니다 (예 : 모달 뷰 컨트롤러의 속성 값 가져 오기). 이러한 관점에서, 상기 방법은 유사한 기능으로서 갖고 prepareForSegue:
의 방법 UIViewController
.
iOS 8 업데이트 : Unwind segue는 Show and Show Detail 과 같은 iOS 8의 적응 형 segue 와도 작동 합니다.
예
네비게이션 컨트롤러와 3 개의 자식 뷰 컨트롤러가있는 스토리 보드를 만들어 보자.
Green View Controller에서 Red View Controller로 되감기 (다시 탐색) 할 수 있습니다. 파란색에서 녹색을 통해 녹색 또는 빨간색으로 긴장을 풀 수 있습니다. 당신이 빨간색과 녹색으로 특수 액션 메소드를 추가해야합니다 풀기 사용하려면, 여기에 예하면 레드의 조치 방법은 다음과 같다 :
목표 -C :
@implementation RedViewController
- (IBAction)unwindToRed:(UIStoryboardSegue *)unwindSegue
{
}
@end
빠른:
@IBAction func unwindToRed(segue: UIStoryboardSegue) {
}
동작 방법이 추가 된 후, 종료 아이콘으로 드래그하여 스토리 보드에서 풀기 segue를 정의 할 수 있습니다. 버튼을 눌렀을 때 녹색에서 빨간색으로 풀리려고합니다.
풀려는 뷰 컨트롤러에 정의 된 작업을 선택해야합니다.
탐색 스택에서 "2 단계 떨어져"있는 파란색에서 빨간색으로 해제 할 수도 있습니다. 열쇠는 올바른 풀기 동작을 선택하는 것입니다.
unwind segue가 수행되기 전에 action 메소드가 호출됩니다. 이 예에서는 녹색과 파란색 모두에서 풀기 segue를 빨간색으로 정의했습니다. UIStoryboardSegue 매개 변수를 통해 조치 메소드에서 해제 소스에 액세스 할 수 있습니다.
목표 -C :
- (IBAction)unwindToRed:(UIStoryboardSegue *)unwindSegue
{
UIViewController* sourceViewController = unwindSegue.sourceViewController;
if ([sourceViewController isKindOfClass:[BlueViewController class]])
{
NSLog(@"Coming from BLUE!");
}
else if ([sourceViewController isKindOfClass:[GreenViewController class]])
{
NSLog(@"Coming from GREEN!");
}
}
빠른:
@IBAction func unwindToRed(unwindSegue: UIStoryboardSegue) {
if let blueViewController = unwindSegue.sourceViewController as? BlueViewController {
println("Coming from BLUE")
}
else if let redViewController = unwindSegue.sourceViewController as? RedViewController {
println("Coming from RED")
}
}
풀림은 푸시 / 모달 세구의 조합을 통해 작동합니다. 예를 들어, 모달 segue를 가진 또 다른 Yellow view 컨트롤러를 추가했다면, 한 번에 Yellow에서 Red로 다시 풀 수 있습니다.
코드에서 풀기
뷰 컨트롤러의 종료 기호에 무언가를 드래그하여 풀기 segue를 정의하면 문서 개요에 새로운 segue가 나타납니다.
segue를 선택하고 Attributes Inspector로 이동하면 "식별자"속성이 표시됩니다. 이것을 사용하여 segue에 고유 식별자를 제공하십시오.
그 후, 다른 segue와 마찬가지로 unwind segue를 코드에서 수행 할 수 있습니다.
목표 -C :
[self performSegueWithIdentifier:@"UnwindToRedSegueID" sender:self];
빠른:
performSegueWithIdentifier("UnwindToRedSegueID", sender: self)
dismissViewControllerAnimated:completion:
이나popViewControllerAnimated:
같은 것을 달성 할 수 없습니까?