RxSwift modifier tableview de cellules sur une sélection de

J'ai une table dans mon application. J'ai été à la source de données pour cette table à l'aide de code suivant

struct ContactNameNumberBlockStatus {
    var contactThumbnail: Data?
    var contactName : String
    var contactNumber: String
    var blockStatus : Bool
}

class BlockListTableViewCell: UITableViewCell {
    @IBOutlet weak var contactImage: UIImageView!
    @IBOutlet weak var contactName: UILabel!
    @IBOutlet weak var contactNumber: UILabel!
    @IBOutlet weak var blockButton: UIButton!
    var eachCell : ContactNameNumberBlockStatus! {
        didSet {
            //setting ui
        }
    }
}

private func showTableContent(data :   Observable<[ContactNameNumberBlockStatus]>) {
        data.bindTo(tableView.rx.items(
            cellIdentifier: "BlockListTableViewCell")) {
            row, contributor, cell in
            if let cell2 = cell as? BlockListTableViewCell {
                cell2.eachCell = contributor
            }
            }.addDisposableTo(disposeBag)
}

Maintenant, quand je tape sur la cellule je veux mettre à jour l'interface utilisateur par montrer/cacher les blockButton mentionné en haut

comment faire ??

avant d'utiliser rx, j'ai utilisé le didSelectRowAt de la vue de la table comme suit

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        contacts[indexPath.row].blockStatus = false
        self?.tableView.reloadData()
}

J'ai trouvé que tableView.rx.itemSelected est la même que ci-dessus didSelectRowAt mais je ne trouve pas comment je peux mettre à jour l'affichage de la table à l'aide de code suivant

tableView.rx.itemSelected
  .subscribe(onNext: { [weak self]indexPath in

  }).addDisposableTo(disposeBag)

Alors, comment mettre à jour la cellule?

  • Avez-vous essayé de changer de modèle et de le recharger table dans .subscribe(onNext: {}) méthode?
  • je ne peux pas changer de modèle, car son let type
InformationsquelleAutor LynAs | 2017-02-05