스토리 보드를 사용하면 매우 쉽습니다. 액션을 “종료”로 드래그하면됩니다. 그러나 내 코드에서 어떻게 호출해야합니까?
답변
- 수동 세구를 작성하십시오 ( ctrl파일 소유자에서 -drag하여 종료).
- 녹색 EXIT 버튼 아래 왼쪽 컨트롤러 메뉴에서 선택하십시오.
긴장을 풀려면 Segue의 이름을 삽입하십시오.
그런 다음, - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender.
당신의 말과 함께 확인하십시오.
답변
Objective C와 Swift에 대한 완전한 대답은 다음과 같습니다.
1) IBAction
목적지 뷰 컨트롤러에서 풀기 segue를 만듭니다 (segue하려는 위치). 구현 파일의 아무 곳이나.
// Objective C
- (IBAction)unwindToContainerVC:(UIStoryboardSegue *)segue {
}
// Swift
@IBAction func unwindToContainerVC(segue: UIStoryboardSegue) {
}
2) 소스 뷰 컨트롤러 (원하는 컨트롤러)에서 “활동 이름”에서 ⌃ + 드래그하여 종료합니다. 팝업의 1 단계에서 생성 된 풀기 segue가 표시되어야합니다. 표시되지 않으면 1 단계를 검토하십시오. 팝업에서 unwindToContainerVC :를 선택하거나 소스 컨트롤러를 unwind IBAction에 연결하기 위해 메소드 이름을 지정하십시오.
3) 스토리 보드의 소스 뷰 컨트롤러 문서 개요 (아래 근처에 나열 됨)에서 segue를 선택하고 식별자를 지정하십시오 .
4) 소스 보기 컨트롤러 에서이 메소드를 사용 하여 해제 해제 segue 이름을 대체하여 해제 해제 segue를 호출하십시오 .
// 목표 C
[self performSegueWithIdentifier:@"unwindToContainerVC" sender:self];
// 빠른
self.performSegueWithIdentifier("unwindToContainerVC", sender: self)
NB. unwind 메서드에서 segue 매개 변수의 sourceViewController 속성을 사용하여 소스 컨트롤러의 노출 된 속성에 액세스하십시오. 또한 프레임 워크가 소스 컨트롤러 해제를 처리합니다. 이를 확인하려면 소스 컨트롤러에 dealloc 메소드를 추가하고 일단 종료되면 실행되어야하는 로그 메시지를 추가하십시오. dealloc이 실행되지 않으면 유지주기가있을 수 있습니다.
답변
bradleygriffith
대답은 훌륭했습니다. 10 단계를 거쳐 단순화를위한 스크린 샷을 만들었습니다. 이것은 Xcode 6의 스크린 샷입니다.
- 주황색 아이콘에서 빨간색 끝내기 아이콘으로 Control- 드래그하면보기에 아무 작업 / 버튼없이 풀기가 해제됩니다.
- 그런 다음
unwind segue
사이드 바에서를 선택하십시오 .
- Segue 식별자 문자열을 설정하십시오.
- 코드에서 해당 식별자에 액세스하십시오.
[self performSegueWithIdentifier:@"unwindIdentifier" sender:self];
답변
나는 [self dismissViewControllerAnimated: YES completion: nil];
당신을 부름으로 돌려 보낼 것을 사용 했다 ViewController
.
답변
Unwind Segue에 대한 Apple 기술 노트의 텍스트 인용 : 프로그래밍 방식으로 만 트리거되는 unwind segue를 추가하려면 장면의보기 컨트롤러 아이콘에서 종료 아이콘으로 control + 드래그 한 다음 팝업 메뉴에서 새로운 segue에 대한 unwind 액션을 선택하십시오.
답변
위의 Vishal Chaudhry의 답변이 저에게 효과적이었습니다. 또한 다음을 사용하여 수동으로 seque를 트리거하기 위해 추가 할 것입니다.
[self performSegueWithIdentifier:@"mySegueName" sender:self];
ViewController 내에서 스토리 보드의 ViewController 장면과 RHS의 속성보기에서 풀기 segue를 선택해야합니다. 식별자 필드에 코드에서 참조하는 이름이 포함되어 있는지 확인합니다 (위 예의 “mySegueName”). ).
이 단계를 생략하면 위의 행에서 seque 이름을 알 수 없다는 예외가 발생합니다.
답변
관심있는 사람들을 위해 ios6 이전 버전에서 작동하는 이전 버전과 호환되는 솔루션 :
- (void)unwindToViewControllerOfClass:(Class)vcClass animated:(BOOL)animated {
for (int i=self.navigationController.viewControllers.count - 1; i >= 0; i--) {
UIViewController *vc = [self.navigationController.viewControllers objectAtIndex:i];
if ([vc isKindOfClass:vcClass]) {
[self.navigationController popToViewController:vc animated:animated];
return;
}
}
}