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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez accéder à la cellule comme ce