2011-08-30 4 views
1

이것은 아이폰 코딩에서 일반적으로 좋은 습관이 무엇인지에 대한 질문입니다.새 델리게이트 객체 작성과 뷰 컨트롤러를 델리게이트로 사용하기

임시적으로 표시되는 UISegmentedControls, 제출 단추, UIActionSheets, 확대/축소 및 닫기 단추가있는 스크롤보기가 있습니다.

(실제로는 공식적인 대리자 메서드가 아닌) 메서드 호출 (target-action for UIControls)과 UIScrollViews의 위임 메서드를이 뷰 컨트롤러로 확대하면됩니까? 또는 이들의 기능을 처리하기 위해 새 [delegate] 객체를 만드는 것이 좋습니다.

답변

1

나는이 모든 것이보기 컨트롤러라고 생각합니다.

내 아이디어는 UIControl의 동작 또는 일부 확대/축소를 관리하는 것이 데이터 (M) 또는 일부 표시 (V)가 아닌 작업이므로이 컨트롤러 (C)에 대한 위치는 하나뿐입니다.

물론 UIControl 이벤트로 인해 데이터 관리가 발생하면 모델에서이를 수행해야하지만 모델 메서드는 컨트롤러에서 호출해야합니다. 직접 연결을 만드는 것이 최선의 방법이 아닌 것 같아요 view<->model.

+0

뷰 컨트롤러를 사용하는 대신 대리자에 대해 새 하위 클래스를 만들어야하는 경우에 대한 몇 가지 예를 들려 줄 수 있습니까? 나는 개념적으로 완전히 틀릴 수도있다 - delegate 메소드는 뷰 컨트롤러에서 구현되도록 지원된다. (대표자가 컨트롤러 (C)이기 때문에) – Louis

+0

@bierko 아니, 할 수 없다. 나는 그것이 나쁜 생각이라고 생각한다. 기술적으로 비 컨트롤러 객체는 델리게이트가 될 수 있습니다 (예를 들어, 모델 클래스에서 프로토콜을 구현 한 다음 객체를 xib에 추가하고 델리게이트로 만들 수 있습니다.하지만 MVC 아이디어를 제동합니다). 컨트롤러 콘트롤러에 관해서는, 막대한 양의 액션이 있다면 (단지 그룹화하는 것만으로도 유용 할 수 있습니다), 단 하나의 케이스 만 상상할 수 있습니다. 하지만 아이폰 dev에 이런 상황이 더 이론적이라고 생각합니다. – kpower

0

필요한 항목에 따라 다릅니다. 위임의 아이디어는 사람들이 더 많은 것을 처리하기 위해 새로운 클래스를 생성하도록 권장합니다. 그러나 대부분의 경우 뷰 컨트롤러에 위임 메소드를 구현하는 것이 편리합니다. 예를 들어, 위임 메소드에서 인스턴스 변수를 사용하고자 할 수 있습니다.

관련 문제