Как справиться с уникальным действием клетки с помощью mvvm - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть уникальная ячейка в UITableView, которая имеет две кнопки. Мне нужно привязать эти действия к viewModel контроллера. Я связываю представление с моделью представления следующим образом:

func attach(wrapper: Attachable<ViewModel>) -> ViewModel {
    self.viewModel = wrapper
    loadViewIfNeeded()
    let viewModel = self.viewModel.bind(bindings: bindings)
    return bind(viewModel: viewModel)
}

Итак, когда вызывается метод loadViewIfNeeded (), у меня все еще нет ячеек из источника данных. Вот почему я не могу создавать привязки из кнопок ячейки.

Я пытался использовать делегат и связь таким образом, но я думаю, что пропустил лучшее решение:

protocol ProfileActionsViewCellDelegate {
     var addFriendButton: UIButton { get }
}

код внутри ячейки

func bind(to viewModel: ProfileActionsViewModel) {
    addFriendButton.rx.tap
        .do(onNext: { [unowned self] _ in self.delegate?.addFriendButton.sendActions(for: .touchUpInside) })
        .debug()
        .subscribe()
        .disposed(by: disposeBag)
}

Пример профиля mvvm

...