2017-10-10 4 views
0

주 페이지에 뷰 컨트롤러가 있습니다. 여기에는 tableview가 포함되어 있습니다. tableview의 행에 드래그하여 컬렉션 뷰를 추가했습니다.사용자 정의 UICollectionViewController를 서브 뷰와 연결

스토리 보드에서 기본 뷰 컨트롤러로 컬렉션보기의 델리게이트와 데이터 소스를 드래그 할 수 있습니다 (충분히 쉽게).

그러나 UICollectionViewController의 사용자 지정 하위 클래스 (컬렉션에 자체 포함 된 MVC가 있음)에 바인딩하고 기본 페이지의보기 컨트롤러에서 응답하지 않습니다. 어떻게해야합니까? (사용자 정의 컨트롤러 클래스를 콜렉션 뷰와 연결 하시겠습니까?)

컨테이너 뷰 컨트롤러를 사용해야합니까? 이런 식으로 올바른 접근 방식은 무엇입니까?

나는 iOS에 초보자이며 모든 안내에 크게 감사 할 것입니다.

답변

0

컨테이너보기를 컬렉션보기 대신 행으로 끌 수 있습니다. 그런 다음 콜렉션 뷰를 컨테이너의 연관된 뷰 컨트롤러 씬으로 드래그하십시오. 오른쪽의 InterfaceBuilder ID 관리자 탭에서 클래스를 사용자 정의보기 컨트롤러 클래스로 변경합니다.

--- 대답 끝 --- 이제 MVC보다 MVVM 접근 방식을 더 많이 채택하는 것이 좋습니다. 이 말은 단순히 MVC를 위해 별도의 뷰 컨트롤러로 분리하지 않고 모든 뷰 컨트롤러를 단순하게 유지하는 것을 의미합니다. 각각의 하나 이상의 (또는 그 이상의) ViewModel을 가져야합니다. 여기에는 해당 뷰 컨트롤러와 관련된 모든 비즈니스 로직이 있습니다. 각 ViewModel (NSObject 또는 원하는 경우 Swift 구조체)은 UI를 전혀 사용하지 않고 독립적으로 단위 테스트를 수행 할 수 있습니다. View Controller는 ViewModels의 데이터를 뷰 & 개의 뷰로 문자 그대로 연결하고 모든 컨트롤을 위해 viewModel에 의존하면서 뷰 & 뷰를 구성합니다. 최소한의 노력으로 아키텍처를 크게 개선 할 것입니다. 희망이 도움이!

+0

답장을 보내 주셔서 감사합니다. 따라서 MVVM을 제외하고 컨테이너보기를 드래그하는 것은이 유형의 중첩 된 아키텍처를 처리하는 "적절한 또는 표준"메커니즘 인 것 같습니다. 물론 부모 페이지의보기 컨트롤러를 오염시키지 않고 하위보기. 나는 "컨테이너 뷰"접근법에도 이점이 있다고 상상한다. 중첩 된 뷰는 다소 독립적 인 위젯 (더 나은 구성 요소 공유)으로 취급 될 것이다. – Tray

+0

예, 컨테이너보기는 여러보기 컨트롤러를 사용하여 장면을 분할하는 방법입니다. "컨테이너보기"는 실제로 UIView이지만 스토리 보드는 다르게 취급하므로 스토리 보드는로드 타임에 해당 UIView에 대해 별도의 UIViewController를 인스턴스화하도록 상기시켜줍니다. 두 번째 "이점"에 관해서는 셀 뷰에서 본 뷰의 관점에서 이미 중첩 된 뷰를가집니다. 스토리 보드에서 컨테이너보기를 별도의 장면으로 보는 것은 스토리 보드에서보다 잘 정리 된 상태를 유지하는 데 도움이됩니다. – Smartcat

+0

답장을 진심으로 감사드립니다. – Tray