简体   繁体   English

通过滑动而不是通过点击选择的UITableViewCell

[英]UITableViewCell selected by swipe not by tap

I'm using RxSwift for binding UITableView to data source. 我正在使用RxSwift将UITableView绑定到数据源。 I want to select table cell in table view. 我想在表格视图中选择表格单元格。 Selection does not work by tap, but works well by swipe gesture. 选择不能通过点击进行,但通过滑动手势可以很好地进行。 What could be the problem? 可能是什么问题呢?

That's what I was truing to do: 那就是我一直想做的:

  • update RxSwift, RxCocoa 更新RxSwift,RxCocoa
  • clean project 清洁项目
  • remove derived data 删除派生数据
  • try combinations of settings of table view and table view cell 尝试组合表格视图和表格视图单元格的设置

Here my code 这是我的代码

View Model 查看模型

import Foundation
import RxSwift

class ViewModel {

    let selectItem: AnyObserver<String>
    let didSelectItem: Observable<String>

    let items: Observable<[String]>

    init() {
      let _selectItem = PublishSubject<String>()
      self.selectItem = _selectItem.asObserver()
      self.didSelectItem = _selectItem.asObservable()
      items = TestAppData.getData()
    }
}

ViewController ViewController

import UIKit
import RxSwift
import RxCocoa

class ViewController: BaseViewController {

  @IBOutlet weak var dataTableView: UITableView!

  var viewModel: ViewModel!

  override func viewDidLoad() {
    super .viewDidLoad()
    setup()
  }

  private func setup(){

    viewModel.items
      .observeOn(MainScheduler.instance)
      .bind(to: dataTableView.rx.items(cellIdentifier: "DataCell", cellType: UITableViewCell.self)) {
        (_, dataValue, cell) in
        cell.textLabel?.text = dataValue
        cell.selectionStyle = .none
      }
      .disposed(by: disposeBag)

    dataTableView.rx.modelSelected(String.self)
      .bind(to: viewModel.selectItem)
      .disposed(by: disposeBag)
  }
}

TableView and TableViewCell settings: TableView和TableViewCell设置: 在此处输入图片说明 RxSwift 4.1.2, RxCocoa 4.1.2 RxSwift 4.1.2,RxCocoa 4.1.2

Try this implementation 试试这个实现

dataTableView.rx.itemSelected
            .subscribe(onNext: { [unowned self] indexPath in
                //DO something with cell
            }).disposed(by: disposeBag)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM