gpt4 book ai didi

ios - RxSwift DataSource configureCell 无法分配函数

转载 作者:行者123 更新时间:2023-11-30 12:37:29 24 4
gpt4 key购买 nike

我尝试将 RxSwift/RxDataSource 与 TableView 一起使用,但无法使用现有函数分配 configureCell。代码如下:

import UIKit
import RxSwift
import RxCocoa
import RxDataSources

class BaseTableViewController: UIViewController {
// datasources
let dataSource = RxTableViewSectionedReloadDataSource<TableSectionModel>()
let sections: Variable<[TableSectionModel]> = Variable<[TableSectionModel]>([])
let disposeBag: DisposeBag = DisposeBag()

// components
let tableView: UITableView = UITableView()

override func viewDidLoad() {
super.viewDidLoad()
setupUI()
setDataSource()
}

func setupUI() {
attachViews()
}

func setDataSource() {
tableView.delegate = nil
tableView.dataSource = nil
sections.asObservable()
.bindTo(tableView.rx.items(dataSource: dataSource))
.addDisposableTo(disposeBag)
dataSource.configureCell = cell
sectionHeader()
}

func cell(ds: TableViewSectionedDataSource<TableSectionModel>, tableView: UITableView, indexPath: IndexPath, item: TableSectionModel.Item) -> UITableViewCell! {
return UITableViewCell()
}

func sectionHeader() {

}
}

Xcode 抛出以下错误:

/Users/.../BaseTableViewController.swift:39:36: Cannot assign value of type '(TableViewSectionedDataSource, UITableView, IndexPath, TableSectionModel.Item) -> UITableViewCell!' to type '(TableViewSectionedDataSource, UITableView, IndexPath, TableSectionModel.Item) -> UITableViewCell!'

错误在行抛出

dataSource.configureCell = cell

你有什么想法吗?

谢谢

最佳答案

您只需从单元格方法的返回类型 UITableViewCell! 中删除 ! 即可。

func cell(ds: TableViewSectionedDataSource<TableSectionModel>, tableView: UITableView, indexPath: IndexPath, item: TableSectionModel.Item) -> UITableViewCell {
return UITableViewCell()
}

通过这种方式,您的函数与 RxDataSource 的 configureCell 属性预期的类型兼容:

public typealias CellFactory = (TableViewSectionedDataSource<S>, UITableView, IndexPath, I) -> UITableViewCell

我个人更喜欢使用以下语法来初始化 configureCell:

dataSource.configureCell = { (_, tableView, indexPath, item) in
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
// Your configuration code goes here
return cell
}

关于ios - RxSwift DataSource configureCell 无法分配函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42689091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com