RxDataSourcesを利用してeditActionsForRowAt機能を実現する(後)
この前の記事「RxDataSourcesを利用してeditActionsForRowAt機能を実現する」
の追記として、今度は、checkEditの条件判断を実現する案について、述べたいと思う。
色々、インタネット上の記事を調べてみたが、やっぱり、tableViewのCell毎に条件判断に使われる変数を定義して、判断に使うのが、実現しやすいことではないかと思って実装して見た。
1. まず、EventCellのファイルでviewModelを変数を定義する
EventCell.swift
class EventCell: UITableViewCell {
private var viewModel = EventCellViewModel() {
didSet {
self.updateUI(viewModel: viewModel) // viewModel更新があるとUI更新を行う
}
}
//... ...
override func awakeFromNib() {
super.awakeFromNib()
}
//... ...
}
2. EventCellのviewModel設定、取得メソットを実装する
EventCell.swift
extension EventCell {
public func configure(viewModel: EventCellViewModel) {
self.viewModel = viewModel
}
public func getViewModel() -> EventCellViewModel {
return viewModel
}
}
3. ViewControllerのtableview DelegateメソットeditActionsForRowAt()に以下の様実装する
EventListViewController.swift
override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
guard let cell = tableView.cellForRow(at: indexPath) as? EventCell else {
return []
}
let viewModel = cell.getViewModel()
guard viewModel.event.canEditable else {
return [] // can't edit
}
//... ...
// ここからはActionを実装登録して置く
}
以上、簡単な工夫になりますが、参考にいただけると、大変ありがたいです〜〜
iOS、Androidアプリの制作なら、https://origon.co.jp にお任せください
信頼且つ満足できる製品を納品いたします
Author And Source
この問題について(RxDataSourcesを利用してeditActionsForRowAt機能を実現する(後)), 我々は、より多くの情報をここで見つけました https://qiita.com/ENIX/items/b0871a5961b3a27c32fa著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .