Objective-C를 사용하는 iOS 앱에서 MVC 패턴의 구현을 이해하려고합니다.UIView의 IBAction - MVC와 호환됩니까?
지금은 응용 프로그램 (모델)의 다른 객체에 데이터를 저장하고 제공하는 DataProvider 객체가 있습니다.
추가 클래스 (UIView
; "ViewClass"라고 부름)가있는보기 (.xib)가 있습니다. 내 뷰는 내 ViewClass의 하위 클래스가되도록 했으므로 레이블과 IBAction
버튼과 같은 서브 뷰에 IBOutlet
을 만들 수 있습니다. 그래서 이것은 MVC-Pattern에서의 나의 뷰입니다.
마지막으로 중요한 것은 내 DataProvider에 대한 참조가 있고 내 View의 개체를 보유하고있는 ViewController
개체입니다. ViewController
이 메모리에로드되면 을 호출하여보기를 viewDidLoad
에 인스턴스화하고 자체보기에 추가합니다. 이것은 MVC 패턴의 컨트롤러입니다.
지금까지 그렇게 좋았지 만 이해할 수없는 것은 다음과 같습니다. MCV-Pattern에 따르면,보기는 모델에서 데이터를 가져 오는 ViewController
에 의해 제공된 데이터 만 표시해야합니다. 이러한 종류의 작업을 담당하는 논리 작업은 ViewController
에서만 발생해야합니다. 그러나 "ViewClass
"에 IBAction
을 만들면 내보기에 일종의 프로그래밍 논리가 있어야합니다.
버튼을 클릭하여 사용자가 텍스트 필드에 입력 한 데이터가있는 양식을 제출하고 싶습니다. 내 ViewClass
에서 나는 나중에 그것을 참조하고 사용자가 입력 한 데이터를 읽을 수 있도록 텍스트 필드에 IBOutlet
을 가지고 있습니다. 클릭 이벤트를 잡으려면 버튼에 IBAction
이 있어야합니다. 이제 데이터를 전송하는 코드가 내보기의 IBAction
방법으로 작성되므로 내보기에 프로그램 논리가 있습니다.
내 질문에 :이 MVC 패턴에 위배 아닌가요?
나는 가능성의 기준을 통과 할 수 내 ViewController
내가보기의 인스턴스를 생성 한 후 다음 얻고 데이터를 전송하는 IBAction
내 ViewController
의 메소드를 호출하면서 내 볼 수 있습니다. 하지만 이것이 올바른 접근 방식이라고 상상할 수는 없습니다. 아니면 내가 잘못된 것을 이해합니까?
미리 감사드립니다.
예제를 이해하지 못했지만 IBAction을 View Controller에 넣지 않는 이유는 무엇입니까? 뷰 컨트롤러는 모든 하위 뷰 (재귀 적으로)에 액세스 할 수 있어야합니다. –
이것은 가능하지 않기 때문에. 내 View (.xib)가 상속하는 "ViewClass"에서 IBAction 만 만들 수 있습니다. – user3296221