Xcode 4.5를 사용하여 스토리 보드를 편집 할 때 새로운 종료 아이콘이 사용되는 것을 아는 사람이 있습니까?


100

종료 아이콘을 마우스 오른쪽 버튼으로 클릭하면 빈 창이 나타납니다. IB 요소 또는 해당 소스 파일에 대한 연결을 Ctrl- 드래그 할 수 없습니다. 문서는 사랑을주지 않습니다. nib 파일에는 표시되지 않고 스토리 보드에만 표시됩니다. 내 가정은 그것이 segues의 추론이라는 것입니다. 그러나 나는 그것을 백업하는 새로운 방법을 보지 못했습니다. 누군가?



답변:


104

WWDC 비디오 "Session 407-Adopting Storyboards in your App"에 많은 정보가 있습니다.

segue로 연결된 두 개의 뷰 컨트롤러가 있다고 가정합니다. 첫 번째보기 컨트롤러에서 다음 종료 작업을 구현합니다.

- (IBAction)done:(UIStoryboardSegue *)segue {
    NSLog(@"Popping back to this view controller!");
    // reset UI elements etc here
}

그런 다음 두 번째 뷰 컨트롤러의 스토리 보드 씬에서 버튼과 같은 UI 요소에서이 뷰 컨트롤러 하단의 종료 아이콘으로 Ctrl- 드래그합니다. done:첫 번째 컨트롤러의 코드에 추가 한 작업이 옵션으로 나타납니다. 이제 Ctrl 키를 누른 채 종료 아이콘에 끌어 놓은 버튼을 활성화하면 첫 번째 뷰 컨트롤러로 다시 팝업되고 원래 상태가 유지됩니다 (예 : 텍스트 입력과 같은 UI 요소는 그대로 유지됩니다).


3
실제로 뷰 컨트롤러 (및 뷰)의 똑같은 인스턴스로 다시 풀립니다.
Jon Hess

감사합니다. "Green Exit"가 무엇인지 알아보기 위해이 글을 읽고 있었지만 문제가 해결되었는지 확인했습니다. TabBar 컨트롤러와 내비게이션 컨트롤러로 분리 된 2 개의 뷰 컨트롤러가 있었는데 "Pop"이 뒤로 돌아가도록 작동하지 않았습니다. 이것은 2 분이 걸렸고 모든 것이 당신이 말한대로 작동했습니다! 감사!
user589642 dec.

Done뷰 A로 돌아 가기 전에 뷰 B 클래스의 버튼에서 액션 메서드를 호출하려면 어떻게 해야합니까?
전문가 '

WWDC 비디오를 시청하면 37:15로 건너 뛰어 "unwind segues"에 대한 부분을 볼 수 있습니다
moliveira

220

나는 받아 들인 대답을 따르는 데 어려움을 겪었으므로 여기에 더 자세한 내용이 있습니다.

뷰 컨트롤러 C의 아래 사진이 주어지면 segue 경로에있는 모든 뷰 컨트롤러로 "종료"할 수 있습니다.

여기에 이미지 설명 입력

ViewController A는 다음과 같이 작성할 수 있습니다.

- (IBAction)done:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController B는 다음과 같이 작성할 수 있습니다.

- (IBAction)back:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController C"뒤로" 버튼에서 녹색 종료 옵션으로 드래그를 제어 하고 뒤로 선택 합니다. ViewController C"완료" 버튼에서 녹색 종료 옵션으로 드래그를 제어 하고 완료를 선택 합니다. 여기에 이미지 설명 입력

참고 : 메서드가 다른 뷰 컨트롤러에 있더라도 ViewController C 의 종료를 위해 표시됩니다 . 컨트롤 드래그 및 메서드 선택은 해제 할 ViewController를 정의합니다.


2
한 가지 더 참고 : 모든 단계가 완료 되어도 녹색 종료 버튼이 활성화되지 않는 경우가 있습니다. 이 경우 스토리 보드 (또는 xcode 프로젝트)를 다시 열면 예상대로 작동합니다.
zxcat

3
내가 가진 또 다른 문제는 .h 파일 또는 클래스 확장자에 unwind segue 메서드 서명을 넣지 않았다는 것입니다. 내가 그것을 추가하면 unwind segue가 팝업에 나타납니다.
Steve Moser 2013 년

2
+ Infinity forEven though the methods are on other view controllers they show up for the ViewController C's exit.
Santa Claus

15

Eric 답변 외에도 여기에서 어떻게 작동하는지:

대상 컨트롤러에 추가하는 함수는 다음과 같습니다.

@IBAction func backFromOtherController(segue: UIStoryboardSegue) {
    NSLog("I'm back from other controller!")
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.