Добавление динамических пользовательских элементов управления в представление с помощью RxSwift из модели View - PullRequest
0 голосов
/ 04 октября 2019

Я недавно начал работать с использованием RxSwift. У меня есть некоторые базовые знания сейчас. У меня есть контроллер представления, для которого я создал соответствующую модель представления, и у меня есть некоторые свойства, определенные и связанные с некоторыми метками на представлении в контроллере представления. Эта привязка работает нормально.

У меня также есть несколько пользовательских элементов управления, которые динамически добавляются в представление прокрутки в контроллере представления на основе определенных условий в ответе API. Поскольку вызов API выполняется через модель представления, модель представления будет иметь полный отклик и будет просто устанавливать свойства, связанные с элементами управления метками в представлении. Вот сценарий, для которого мне нужна некоторая идея или подсказки

На основе некоторых флагов в ответе API мне нужно указать представление для динамического добавления настраиваемого элемента управления A, B, C в представление прокрутки и передачи необходимых данных. к пользовательским элементам управления для заполнения. А данные, передаваемые в пользовательские элементы управления, относятся к модели представления.

Рекомендуется ли создавать модель представления даже для пользовательских элементов управления? Если да, как я могу справиться с описанным выше сценарием и соответствовать шаблону MVVM, используя RxSwift. По сути, поскольку полные данные находятся в модели представления контроллера представления, как наилучшим образом обмениваться этими данными с пользовательскими элементами управления и в то же время соответствовать шаблону MVVM и сохранять структурированный код.

1 Ответ

0 голосов
/ 04 октября 2019

Это зависит от сложности вашего пользовательского элемента управления: если вам нужно обрабатывать много бизнес-логики / данных внутри него, то у этого представления должна быть своя собственная модель представления

Думать об этом такв приложении у нас есть контроллеры представления, контроллер представления - это просто представление, и у нас есть модель представления для него. Поэтому, когда контроллер представления настолько сложен, мы можем разделить его на меньшие представления с их собственными моделями представлений, ячейка табличного представления может иметь свою модель представления, если это необходимо, это похоже на ваш случай здесь.

Так что мы могли быесть модель представления, подобная этой

class CustomControlViewModel: NSObject {
    var data: String!
    var flag: Int!

    init(data: String, flag: Int) {
        self.data = data
        self.flag = flag
    }
}

И данные контролируются внутри ViewControllerViewModel

func createCustomControlViewModel() -> CustomControlViewModel {
    return CustomControlViewModel(data: "data from view model", flag: 1)
}

Надеюсь, этот ответ поможет вам

...