2010-07-20 3 views
3

전임 프로그래머가 아닌 Objective-C를 처음 사용했습니다. 모델과 UI를 구별하기 위해 Model-View-Controller 디자인 패턴을 이해하기 시작했습니다. 따라서 사용자가 작업을 수행하고보기 컨트롤러가 대리인 (모델)에게 메시지를 보냅니다. 그러나 대리자에서 뷰 컨트롤러로 액션을 보내는 가장 좋은 방법이 무엇인지 잘 모르겠습니다.목표 C 콜백 및 알림

예를 들어 사용자가 버튼을 누르면 VC가 대리인에게 메시지를 보냅니다. 그 부분을 이해합니다. 그 다음에 델리게이트는 액션을 취하고,이어서 델리게이트는 VC를 업데이트 (예를 들어, 라벨을 업데이트)하기를 원한다.

그래서 내가 놓친 (또는 잊어 버린) 것은 UI와 모델 간의 분리를 유지하면서 이것이 어떻게 이루어 지는지입니다. 알림 센터를 사용할 수 있습니다. 아니면 그냥보기 컨트롤러를 대리자에 콜백 전달할 수 있습니다 생각합니다. 아니면 모를 다른 선택이있을 수 있습니다. 누군가 내게 추천서를 줄 수 있습니까?

+0

"사용자가 버튼을 누르면 VC가 대리인에게 알리겠습니다." 어쩌면 그렇게 생각하지 마십시오. 또는 적어도 용어가 섞여있는 것입니다. –

답변

0

기본적으로 맞습니다. 알림 센터와 관련된 모든 알림 관련 작업을 수행 할 수 있지만 UI 스터프에 대한 이야기이므로 여기에서 IBAction -Methods 및 IBOutlet- 속성을 사용하는 것이 좋습니다. 인터페이스 빌더에서 UI-Elements와 Callback에 쉽게 연결할 수 있습니다. 이 주제에

아주 기본적인 소개는 여기에서 찾을 수 있습니다 : iPhone SDK Interface Builder basic training 내가 바른 길에 당신을 이끌 수있는 힘든 너무 기본 아니라는 것을 희망하고있다.

-1

우선 대리인은 모델이 아닙니다.

모델은 데이터 (DB, plist, 배열, 사전 등) 만 보유하는 수동적 인 것입니다.
위임은 일부 이벤트에 반응하기 위해 존재하는 일부 기능 집합이지만.
대리인이 귀하의 경우보기 컨트롤러 일 가능성이 큽니다.

보기 컨트롤러는 사용자의 동작에 반응해야합니다.
버튼 탭에 모델의 일부 데이터가 일부 레이블에 표시되어야하는 경우보기 컨트롤러는 모든 작업을 수행해야합니다 (사용자의 작업 수신, 모델에서 필요한 데이터 가져 오기 및보기에 표시).

+2

모델이 수동 일 필요는 없습니다. 비즈니스 데이터 및 비즈니스 데이터와 관련된 규칙 및 메소드를 보유합니다. – JeremyP

+0

모델은 뷰 또는 컨트롤러를 알지 못합니다. 어느 누구에게도 조치를 취할 수 없습니다. 네가 완전히 엉망이되기 시작하면. 보유 할 수있는 방법은 데이터 그 자체에만 영향을 줄 수 있습니다. 뷰 컨트롤러에서 작업을 수행하거나 모델의 레이어를 볼 때 사용한다고 말하면 나는 당신을 고용하지 않을 것입니다 ... –

4

MVC 패러다임을 약간 오해 한 것 같습니다. 모델은 뷰 클래스의 의존성이나 지식을 가져서는 안되기 때문에 모델은 뷰의 위임을해서는 안됩니다. 일반적으로보기는 메시지를 대리인 또는 대상 (대상/작업을 사용하는 경우)으로 보냅니다.이 컨트롤러는 대개 컨트롤러 (종종 iOS의 경우 UIViewController의 하위 클래스 임)입니다. 그러면 컨트롤러는 모델에서 데이터에 액세스하고 업데이트가 필요한 모든 뷰를 업데이트 할 수 있습니다. 더 자세한 설명은 MVC fundamentals guide을 읽어 보시기 바랍니다.