2009-05-29 6 views
2

저는 코코아와 iPhone 프로그래밍에 새로운 경험이 있습니다.코코아 터치 앱 아키텍처 - MVC 컨트롤러?

  • 텍스트 필드와 뷰가 연결 버튼으로 사용자 이름을
  • 뷰를 수집 : 나는이 간단한 응용 프로그램을 구현하기 위해 엑스 코드 유틸리티 응용 프로그램을 템플릿을 사용하고

    을 사용하여 사용자 이름을 사용하여 원격 사이트에 대한 연결을 시작하여 HTTP를 통해 일부 데이터를 가져옵니다. 데이터는 화면에 텍스트 문자열로 표시됩니다.

이것은 내 의 MVC 패턴으로보기을 나타냅니다.

사용자 이름을 저장하고 내 MODEL을 나타내는 모든 연결 작업을 수행하고 AppDelegate에서이를 인스턴스화하는 간단한 클래스를 만들었습니다. 여기

정말 간단한 스케치 :

simplified sketch

내가 파단 (사용자 이름) 또는 내가 중첩 된 부모 뷰에서 작업을 트리거 할 수있는 방법으로 깊은 중첩 된 데이터를 얻을 수있는 방법을 나에게 정말 명확하지 않다 (연결 단추).

내 질문은 :

이 아키텍처를 구현하는 가장 좋은/깨끗한 방법은 무엇입니까?

컨트롤러은 어떻게 구현합니까? 의견에 따라 내 대답을 업데이트 사전에 어떤 도움

감사합니다,
Paull

답변

2

는 :

그것은 당신의 컨트롤러 상태를 가지고 대부분의 경우에 괜찮습니다. 어떤 모델 객체의 배열이나 인스턴스처럼 당신은 어플리케이션을 작성하고 있습니다.

나는 모델 객체를 모든 네트워킹 코드에서 깨끗하게 유지하고 대신 컨트롤러에 넣을 것이다. 이 경우 해당 연결 작업이 실행되는 ViewController입니다.

원래 답 :

내가 데이터를 파단 (사용자 이름) 또는 I 중첩 된 부모의 행동을 유발 수있는 방법으로 깊은 중첩받을 수있는 방법을 나에게 정말 명확하지 않다 전망 (연결 단추).

유틸리티 응용 프로그램 템플릿을 사용하면 이미 두 개의 ViewController가 있습니다.

컨트롤러 내에서 UI에 대한 참조를 얻으려면 IBOutlets을 선언하고 Interface Builder에서 연결해야합니다. 동작에 응답하려면 IBActions을 선언하고 ViewController에 구현해야하며 인터페이스 작성기에서도 연결해야합니다. 검사기에서 연결 창 (왼쪽에서 두 번째)에서 수행합니다.

+0

IBOutlets 및 IBActions를 사용하여 UI 요소를 바로 가기 뷰 컨트롤러에 연결할 수 있습니다. 상위 컨테이너 데이터를 내 모델 대리인 포함 된 내 응용 대리인까지 전파하는 방법을 이해하지 못합니다 ... – Paull

+0

상태 또는 데이터를 유지하는 응용 프로그램 대리인이 작동하지만 좋은 아키텍처가 아니므로 항상 사용할 수 있습니다 ([NSApplication 델리게이트])이 전역 객체에 대한 주석을 작성하는 코드로 쉽게 연결됩니다. 재사용 할 수 없다. 소규모 응용 프로그램에서는 괜찮을 수 있습니다. – monowerker

+0

답변 해 주셔서 감사합니다! 내 간단한 응용 프로그램의 경우 두 서브 뷰 (텍스트 필드 및 연결 단추 + 레이블)에 모두 도달 할 수 있도록 루트 컨트롤러 내부에 모델 인스턴스를 두는 것이 좋습니다. 당신이 제안한대로 네트워킹도 정리할 것입니다. 정말 중첩 된보기가있는 더 복잡한 아키텍처에 어떻게 대처할 수 있을지 궁금합니다. 앱 전체에서 액세스 할 수 있도록 싱글 톤 모델이 필요합니까? (이 방법이 맘에 들지 않습니다.) 아니면 어쩌면 상위 뷰 메소드를 호출하거나 이벤트 알림을 보내는 데 데이터를 전파해야합니까? – Paull