2017-01-28 12 views
0

서버에서 검색 한 구성을 기반으로 런타임에 컨트롤을 동적으로 생성해야한다는 요구 사항이 있습니다. 또한 MVVM 패턴을 사용하려고합니다.iOS - MVVM에서 동적으로 컨트롤 만들기

예제를 간단히 작성하려면 ViewN의 번호를 UILabels으로 만들고 각 설정 (색상, 글꼴 등)은 모두 서버의 구성을 기반으로합니다. 마음에 오는

우선, 내 ViewModellistUILabels 속성을 가지고 있고, ViewModelUILabel 객체의 생성과 그 특성/속성 (색상, 글꼴 등) 설정에 대한 책임을 져야하는 것입니다. View위한

View 후 대신 데이터를 제공한다 I 일부 실시 예에서 판독 그러나 ViewModelUIKit 참조하지 않도록, 각 self.view.addSubview()

통해 추가 viewModel.listUILabelsUILabel 반복 것이다 특성 & 열거 (이 점에 대해 자유롭게 의견을 말하십시오).

MVVM 규칙을 준수하려면 내 논리를 분할해야하며 뷰 내부에는 무엇이 들어가야하며이 경우 ViewModel 안에 무엇이 들어가야합니까?

답변

1

제 생각에는 View 클래스에는 UILables를 만들고 구성 설정에 따라 UI 동작을 설정하는 논리가 포함되어야합니다.

ViewModel은 사용자 상호 작용을 기반으로 데이터가 변경 될 때 데이터 소스 (모델) 및 데이터 소스 (모델)의 데이터 변경 사항을 업데이트해야 할 때 뷰를 업데이트해야하는 기본 데이터와 상호 작용할 수있는 인터페이스 (속성) (만약에 어떠한).

0

기본적으로 ViewModel은 가능한 한 View에 독립적이어야합니다. 하나의 페이지에 관련되고 논리적으로 속하는 데이터의 표현이어야하지만 뷰 자체가 구현되거나 표현되는 방식에 의존해서는 안됩니다. 이상적으로는 ViewModel을 수정하지 않고도보기와 레이아웃을 변경할 수 있어야합니다.

ViewModelUILabels의 목록을 포함하지 말고 대신 뷰에 표시하려는 "데이터"를 저장할 사용자 지정 클래스 목록을 넣어야합니다. 이 경우 UI 관련 데이터를 다루기 때문에 이러한 사용자 정의 클래스의 특성으로 색상 또는 글꼴 속성을 포함해도 아무런 문제가 없어야합니다.

그러면보기 자체에서이 목록을 볼 수 있으며 제공된 데이터를 기반으로 적절한 컨트롤 (UILabels)을 동적으로 만들 수 있습니다.