#ios #swift #uitableview #rx-swift
#iOS #быстрый #uitableview #rx-swift
Вопрос:
Я пытаюсь вызвать modelSelected
функцию с помощью RxSwift в моем UITableView, но по какой-то причине, в отличие от любого другого UITableView, который я реализовал в своей кодовой базе, он не распознает мой жест касания, если я не удерживаю нажатой ячейку табличного представления.
У меня есть табличное представление, которое я подключил к своему файлу .xib. В этом файле .xib я встроил свое табличное представление в свой UIViewController и определил макет для прототипа ячейки табличного представления.
@IBOutlet private var tableView: UITableView!
И это то, что у меня есть в моей viewDidLoad
функции.
viewModel.modelArray
.bind(to: tableView.rx.items(cellIdentifier: CustomTableViewCell.reuseIdentifier, cellType: CustomTableViewCell.self)) { row, element, cell in
// Assign cell UI properties
}
.disposed(by: disposeBag)
tableView.rx.modelSelected(ModelClass.self)
.subscribe(onNext: { [weak self] model in
// Respond to cell tap
})
.disposed(by: disposeBag)
Может быть, я чего-то здесь не понимаю?
Комментарии:
1. В опубликованном вами коде ничего не пропущено, и он работает правильно. Проблема должна быть где-то в другом месте.
2. Если вы используете симулятор, я обнаружил, что иногда сбои пользовательского интерфейса и касания не регистрируются должным образом. Попробуйте отключить симулятор и запустить его снова
Ответ №1:
После некоторых поисков и разговора с командой RxSwift мне удалось найти основную причину этой проблемы: на этом контроллере представления был конфликтующий UIGestureRecognizer.
Я назначил его компоненту этого контроллера представления view
, что в конечном итоге мешало жесту касания для modelSelected
функции. Итак, хотя modelSelected
функция для моего табличного представления не обязательно игнорировалась, она будет распознана только после длительного нажатия.