2009-07-08 5 views
2

처음으로 상당히 복잡한 코코아 터치 뷰를 연결하면 부주의하게 이전 절차 패턴으로 빠져 나와이를 떨쳐 버리는 것처럼 느껴집니다 ... 완전히 인식하고 있지만 많은 코코아 (OO) 디자인 패턴 중 내가 그들을 두려워 할 수도 있습니다.복잡한 코코아 터치 뷰 컨트롤러 간소화

그런 관점에서 볼 때이 문제는 빠르게 관리하기 어려워지고 있으며 내가 잘못 접근하고 있는지 궁금해하고 있습니다. 뷰는 UIViewController의 하위 클래스로 관리됩니다. 뷰 자체에는 ± 10 개의 하위 뷰가 포함됩니다. 이 하위 뷰 중 일부는 안팎으로 "슬라이드"되고 하위 뷰 (컨트롤, 이미지 뷰 등)가 포함되어 있습니다.

너무 많은 세부 사항에 익숙하지 않으면 내 루트 뷰 컨트롤러의 touchesBegan/Moved/Ended 메소드에서 내 관리 코드의 대부분 (애니메이션을 포함하여 모두는 아니더라도)을 실행하고있는 것으로 나타났습니다. 그리고 관리의 혼란, & 부울 속성을 확인 설정.경우 (editingMode & panelAVisible) .... (editingMode & panelBVisible)는 ... 또는 * {(someArrayOfSubviews에 MyCustomView 뷰)에 대한} (viewFlipped)이 등, 등 ... UI를 부여한 경우 만약 이 앱의 경우 대부분의보기 (또는 그 내용)가 사용자가 터치하여 화면의 다른 부분으로 이동해야합니다.

내가 해결하려고하는 주요 문제는 다음과 같습니다. viewA가있는 경우 3 개의보기가 숨김 (애니메이션)으로 이동합니다 ... 또는 viewB가 눌러지면 viewC에 포함 된 모든 객체가 표시됩니다. 부정 등 ...

이것을 처리하기위한 영리한 (또는 초보적인) OO 접근 방식은 무엇입니까? 아마도 뷰가 포함 된 하위 뷰를 자체 미니보기 컨트롤러로 사용하게할까요? 나는 너무 많은 (어떤?) 예제를 찾을 수 없었지만 ...

답변

0

마지막 제안을 따라 가야만 뷰가 포함 된 하위보기가 자체 미니 컨트롤러로 작동해야한다고 생각합니다. '내용이 가득한 화면'을 제공하는 각 (하위)보기는 자체보기 컨트롤러로 관리 할 수 ​​있거나 관리해야합니다.

기본 슬라이드 애니메이션이있는 것처럼 내비게이션 컨트롤러에서 빌드하면 (실제로는 내비게이션 컨트롤러의 위쪽 막대를 숨길 수 있음) 이러한 뷰 사이에서 애니메이션을 적용 할 수 있습니다. 그렇지 않으면 네비게이션 컨트롤러를 사용하면서 자신 만의 애니메이션을 만들 수 있습니다.

'보기 자체에 ± 10 개의 하위보기가 포함되어 있습니다.' 이 하위 뷰 중 일부는 안팎으로 밀려납니다. 당신이 말하는이 서브 뷰들은 하나의 모 놀리 식 UIView에서 추출 할 수있는 완벽한 후보입니다.

기본적으로 사용되는 기본 원리는 네비게이션 컨트롤러가 스택에서보기를 밀고 튕기는 방식입니다. 푸시되고 팝 된 각 뷰는 자체 뷰 컨트롤러에 의해 처리됩니다.

HTH

편집 : 이제 아이폰 개발에 대해 특별히 이야기하는 것은 아닙니다. 여전히, 거기에 어떻게 보입니까 (특히 UINavigationController).

+0

아마도 내가 분명해야했습니다. 예, iPhone 용입니다. 그리고,이 subviews 전체 '콘텐츠로 가득 차있는 화면'되지 않습니다. 그것들은 어쩌면 1/6 화면의 '패널'일 것입니다. 터치하면 추가 컨트롤/UIView가 제공됩니다. 그래서 그들은 전체 UINavigationController를 merrit 생각하지 않습니다. – Meltemi

+0

네비게이션 컨트롤러가 아마도 너에게 너무 많을 것이다. 그럼에도 하위 뷰용 별도의보기 컨트롤러를 만들 수 있습니다. – drvdijk

1

질문의 마지막에 제안했듯이 특정 하위보기에 대한 논리가 필요할 때마다 하위 컨트롤러를 사용하는 것이 좋습니다. 컨트롤러 객체의 요점은 뷰의 상태를 추적하고 설명하는 모든 뷰 로직을 캡슐화하는 것입니다.사용자가 다른 화면으로 이동할 수있는 경우와 같은 인터페이스 동작은 저장 논리를 호출하고 새 문서를 만들 수 있으며 특정보기의 컨트롤러에 있어야합니다. 이것은 여러 컨트롤러 사이의 관심을 분리하고 최상위 수준에서 회선 논리를 끊어 버리는 데 도움이됩니다.

특별히 iPhone 프로그래밍과 관련이 없지만 책 Cocoa Programming for Mac OS X에는 응용 프로그램에서 하위 컨트롤러 및 하위보기를 사용하는 좋은 예가 포함되어 있습니다 (특히 환경 설정 창을 만드는 방법에 대한 장에서).

+0

안녕하세요! 나는 Hillegass의 책을 가지고있다. 나는 당신이 언급하고 다시보고하는 장을 검토 할 것이다 ... – Meltemi