iOS6 지원을 위해 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의 기술 노트입니다 .
exit
호출하려는 메서드를 선택 하는 요소에서 버튼으로 연결 해야합니다. 여기에서 예 를 찾을 수 있습니다 ( 예제 를 포함하기 위해 제 답변도 업데이트했습니다)
스토리 보드에 일련의보기가 있다고 상상해보십시오.
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, 취소 버튼) 의 요소에서 Z
의 Exit
. IBAction
하나만 UIStoryboardSegue *
작업으로 허용 하는보기 계층 구조에서 상위의 모든보기 를 검색하고 선택할 수 있도록 나열합니다.
바라건대 이것은 기존 답변보다 더 간단하고 도움이 되었기를 바랍니다. 이 링크가 특히 유용하다는 것을 알았으므로 내 답변을 읽은 후에도 여전히 모호한 세부 정보가 있으면 도움이 될 수 있습니다 (이 긴 기사의 모든 유용한 정보를 짧은 답변으로 압축하려고했습니다). http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html
종료 아이콘에 생명력을 불어 넣기위한 요구 사항을 설명하는 Cannot Connect Storyboard Unwind Segue 를 참조하십시오 . 뷰 컨트롤러 계층에서 상위에 다음과 같은 메서드가 있어야합니다.
IBAction으로 표시
UIStoryboardSegue * 인 하나의 매개 변수를 사용합니다.
두 조건이 모두 충족되면 종료 아이콘이이를 표시하고 동일한 뷰 컨트롤러의 버튼에서 컨트롤 드래그하여 연결할 수 있습니다.
또한 여기에 세계에서 가장 간단한 예를 게시했습니다.
https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p638presentedViewControllerStoryboard(2013 년 7 월 12 일 수정 됨)
이것은 정보를주고 받기 위해 이전에해야했던 모든 작업 (대리자 및 프로토콜이있는 템플릿의 항목)과는 대조적으로 현재 제시된 뷰 컨트롤러 에서왔다 갔다 하는 것이 얼마나 쉬운 지 보여줍니다. , 이제 모두 삭제할 수 있음).
도움이 될 수있는 요구 사항 정의에 약간의 미묘함을 추가하기 만하면됩니다. 이것은 Xcode 4.6에서의 실험을 기반으로합니다. Xcode에서 원하는 컨트롤 드래그 응답을 가능하게하는 메서드의 declaring (!) 뿐이라는 것을 알았습니다. 전체 요구 사항은 다음과 같습니다.
IBAction
UIStoryboardSegue
* 인 하나의 매개 변수를 사용합니다..M
구현 섹션 의 메소드를 의미 ])..M
appdelegate 클래스를 제외한 모든 클래스의 인터페이스 선언, 심지어의 인터페이스 섹션에있을 수 있습니다 . (컨트롤러 계층에서 해당 위치에 대한 종속성을 보지 못했습니다. 이전 파일을 추가 할 수 있으며 시스템은 UIStoryboardSegue
매개 변수 가있는 모든 메소드를 집계 하여 종료 아이콘의 메뉴에 표시하는 것 같습니다 .) control-drag 메뉴는 방법이 스토리 보드 편집기에서 조작중인 장면의 클래스에있는 경우에도 방법을 표시하지만 콜론없이 표시되고 런타임에 어떤 작업도 트리거하지 않는 것 같습니다.예:
-(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;