アプリにテーブルビューがあります。次のコードを使用して、このテーブルのデータソースを生成しました
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)
}
セルをタップすると、上部に記載されているblockButton
を表示/非表示にしてUIを更新したい
これを行う方法 ??
rxを使用する前に、私は次のようにテーブルビューのdidSelectRowAtを使用しました
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
contacts[indexPath.row].blockStatus = false
self?.tableView.reloadData()
}
見つけた tableView.rx.itemSelected
は上記と同じdidSelectRowAt
ですが、次のコードを使用してテーブルビューを更新する方法を見つけることができません
tableView.rx.itemSelected
.subscribe(onNext: { [weak self]indexPath in
}).addDisposableTo(disposeBag)
では、セルを更新する方法は?
このようにセルにアクセスできます
tableView.rx.itemSelected
.subscribe(onNext: { [weak self] indexPath in
let cell = self?.tableview.cellForRow(at: indexPath) as? SomeCellClass
cell.button.isEnabled = false
}).addDisposableTo(disposeBag)