[iphone] Xcode 4.5 스토리 보드 ‘종료’

iOS6 지원을 위해 Xcode 4.5를 방금 설치했으며 스토리 보드에 ‘첫 번째 응답자’등과 함께 내 뷰 컨트롤러 아래에 나열된 ‘종료’라는 새 아이콘이 표시되었습니다. ‘종료’라고 표시된 작은 녹색 아이콘.

나는 그것에 대해 아무것도 찾을 수 없으며 어떻게 사용할 수 있는지 알아낼 수 있습니다.

누구든지 그것에 대해, 어떻게 작동하는지, 무엇을 위해 무엇을 알고 있습니까?



답변

이를 ” Unwind Segue “라고합니다. 불행히도 XCode 4.5의 새로운 기능 목록에 대한 간략한 언급을 제외하고는 지금까지 이에 대한 문서가 없습니다.

Unwind segues는 스토리 보드의 기존 장면 인스턴스로 전환 할 수 있습니다.

좋은 소식은 WWDC 2012에서 이러한 생물을 설명하는 세션이 있다는 것입니다.

개발자 계정 세부 정보로 Apple의 iOS Dev Center에 로그인 한 다음 WWDC 2012 동영상 페이지 로 이동하여 “Adopting Storyboard in your App”을 시청할 수 있습니다 (위에서 5 번째) unwind segue에 대한 논의는 37:20에 시작됩니다 .


업데이트 :
다음은 Apple 문서의 주제에 대한 추가 정보입니다.

시퀀스 해제를위한 Exit라는 자리 표시 자 개체입니다. 기본적으로 사용자가 자식 장면을 닫으면 해당 장면의 뷰 컨트롤러가 부모 장면 (원래 자식 장면으로 전환 된 장면)으로 해제 (또는 반환)됩니다. 그러나 Exit 개체를 사용하면 뷰 컨트롤러가 임의의 장면으로 풀릴 수 있습니다.

(iOS6 docset> General> Getting Started에서)

다음은이를 구현하는 방법에 대한 좋은 예입니다.


또 다른 업데이트 :

다음은 이 주제에 대한 Apple의 기술 노트입니다 .


답변

스토리 보드에 일련의보기가 있다고 상상해보십시오.

A -> ... -> Z

Z사용자가로 돌아갈 수 있는 버튼을보기에 원합니다 A.

따라서해야 할 일은이 경우 A으로 표시되고 IBAction유형의 단일 매개 변수를 받는 인스턴스 메소드 로 완전히 되돌아 가려는 뷰를 제공하는 것 UIStoryboardSegue *입니다. 메서드와 변수의 이름은 중요하지 않습니다. 구현 내에서 수행하는 작업도 중요하지 않습니다. 예를 들면 다음과 같습니다.

OBJ-C :
에서 A의 인터페이스 (하지 Z의) :

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue;

에서 A의 구현 (안 Z‘들) :

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue {
    // Only "implemented" to satisfy a respondsToSelector: search.
    // You can actually implement more stuff here, if you want, IE, if
    // you need to reach out to a server to mention that this screen was
    // returned to from a later screen.
}

스위프트 :
에서 A의 소스 (하지 Z의) :

@IBAction func cancelSignup(unwindSegue: UIStoryboardSegue) {
    // Only "implemented" to satisfy a respondsToSelector: search.
    // You can actually implement more stuff here, if you want, IE, if
    // you need to reach out to a server to mention that this screen was
    // returned to from a later screen.
}

이제 스토리 보드 내 control에서 Z(IE, 취소 버튼) 의 요소에서 ZExit. IBAction하나만 UIStoryboardSegue *작업으로 허용 하는보기 계층 구조에서 상위의 모든보기 를 검색하고 선택할 수 있도록 나열합니다.

바라건대 이것은 기존 답변보다 더 간단하고 도움이 되었기를 바랍니다. 이 링크가 특히 유용하다는 것을 알았으므로 내 답변을 읽은 후에도 여전히 모호한 세부 정보가 있으면 도움이 될 수 있습니다 (이 긴 기사의 모든 유용한 정보를 짧은 답변으로 압축하려고했습니다).
http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html


답변

종료 아이콘에 생명력을 불어 넣기위한 요구 사항을 설명하는 Cannot Connect Storyboard Unwind Segue 를 참조하십시오 . 뷰 컨트롤러 계층에서 상위에 다음과 같은 메서드가 있어야합니다.

  1. IBAction으로 표시

  2. UIStoryboardSegue * 인 하나의 매개 변수를 사용합니다.

두 조건이 모두 충족되면 종료 아이콘이이를 표시하고 동일한 뷰 컨트롤러의 버튼에서 컨트롤 드래그하여 연결할 수 있습니다.

또한 여기에 세계에서 가장 간단한 예를 게시했습니다.

https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p638presentedViewControllerStoryboard(2013 년 7 월 12 일 수정 됨)

이것은 정보를주고 받기 위해 이전에해야했던 모든 작업 (대리자 및 프로토콜이있는 템플릿의 항목)과는 대조적으로 현재 제시된 뷰 컨트롤러 에서왔다 갔다 하는 것이 얼마나 쉬운 지 보여줍니다. , 이제 모두 삭제할 수 있음).


답변

도움이 될 수있는 요구 사항 정의에 약간의 미묘함을 추가하기 만하면됩니다. 이것은 Xcode 4.6에서의 실험을 기반으로합니다. Xcode에서 원하는 컨트롤 드래그 응답을 가능하게하는 메서드의 declaring (!) 뿐이라는 것을 알았습니다. 전체 요구 사항은 다음과 같습니다.

  • 다음으로 표시 IBAction
  • UIStoryboardSegue* 인 하나의 매개 변수를 사용합니다.
  • 액션을 선언해야합니다 (그러나 반드시 구현 된 것은 아닙니다 [ .M구현 섹션 의 메소드를 의미 ]).
  • .Mappdelegate 클래스를 제외한 모든 클래스의 인터페이스 선언, 심지어의 인터페이스 섹션에있을 수 있습니다 . (컨트롤러 계층에서 해당 위치에 대한 종속성을 보지 못했습니다. 이전 파일을 추가 할 수 있으며 시스템은 UIStoryboardSegue매개 변수 가있는 모든 메소드를 집계 하여 종료 아이콘의 메뉴에 표시하는 것 같습니다 .) control-drag 메뉴는 방법이 스토리 보드 편집기에서 조작중인 장면의 클래스에있는 경우에도 방법을 표시하지만 콜론없이 표시되고 런타임에 어떤 작업도 트리거하지 않는 것 같습니다.

예:
-(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;


답변