2012-11-06 5 views
6

1 년 전 Xcode의 이전 버전에서 여러 iOS 응용 프로그램을 작성했습니다. 방금 새 프로젝트를 시작했으며 최신 Xcode에서 스토리 보드 기능을 발견했습니다. 30 개의 서로 연결된 스크린으로 구성되어 있기 때문에 제가 작성한 어플리케이션에 이상적입니다.모달 스토리 보드 무한 루프를 피하는 방법

제 질문은, 내 응용 프로그램이 내 화면을 통해 원형 경로를 따라갈 수 있도록 스토리 보드와 곡목을 어떻게 구성합니까? 나는 examples의 숫자를 보았는데, 단순히 스크린 1을 스크린 2로, 그 다음 스크린 2를 스크린 1에 모달 옵션을 사용하여 보았다. 이것은 분명히 작동하지만이 방법으로 작성된 응용 프로그램을 디버깅 할 때 수행 된 모든 각 세그먼트에 대해 각 화면 (보기 컨트롤러)의 새 인스턴스를 인스턴스화합니다. 아래 다이어그램 (사과, 좋은 그림을 그렸지만 초보자 상태로 게시 할 수 없었습니다.)에서 새 화면을 만들지 않고 화면 1에서 화면 2로, 화면 3에서 원래 화면 1로 돌아가려면 어떻게해야합니까? 예?

답변

3

좋아,이 질문을 제기 한 이후 나는 꽤 정교한 연구를 수행했으며 나는 그 질문에 대해 합리적인 답을 제공 할 수 있다고 생각한다. 요컨대, 내가 제안한 접근 방식은 스토리 보드와 섹스가 실제로 작동하는 방식과 호환되지 않습니다. Segues 항상은 대상이되는보기 컨트롤러/뷰의 새 인스턴스를 인스턴스화합니다. 즉, 화면 3에서 화면 1로 돌아 가면 원본이 아닌 화면 1의 새 인스턴스로 이동하게됩니다. 이를 해결하기 위해 스토리 보드를 약간 다르게 구현합니다.

// Screen 1 --> Screen 2 
//  | 
//  +------> Screen 3 

스크린 (1)의 사용자는 스크린 (2)에 해당하는 버튼을 선택하면, 그때 confiure 화면 한 화면 2, 3

행 (대리인/프로토콜을 통해) '다음 화면'메시지를 수신 할 것이다 스토리 보드와 세그는 스크린 2의 모달 인스턴스화를 처리 할 것입니다. 스크린 2의 사용자가 '다음 스크린'버튼을 선택할 때, 스크린 3으로 이어지는 대신, 스크린 2를 닫고 스크린 1이 스크린 3을 새로운 화면 1 -> 화면 3의 순서.

이 접근법은 스크린 1이 루프의 모든 후속 스크린의 주 컨트롤러가 될 수 있다는 이점이 있습니다. (예를 들어, 루프에 10 개의 스크린/연습이 있습니다. 유일한 단점은 스토리 보드가 화면의 흐름을 제대로 반영하지 않는다는 것입니다.

다른 사람들이 iOS 프로젝트에서 동일한 것을 시도하는 데 도움이되기를 바랍니다.

관련 문제