gpt4 book ai didi

ios - RxSwift 访问 indexPath.section

转载 作者:可可西里 更新时间:2023-11-01 00:21:04 26 4
gpt4 key购买 nike

伙计们,我是 Rxswift 的新手,有没有办法在 RxSwift 中实现这个场景?

我得到的是这个..但问题是我没有indexPath

datasource.sectionModels
.asObservable()
.bindTo(tableView.rx.items) { tableView, row, element in
guard let sectionType = SectionType(rawValue: indexPath.section) else { return 0 }

let indexPath = IndexPath(row: row, section: 0)

var itemForIndexPath: SectionViewModel {
return self.datasource.sectionModels.value[indexPath.section]
}

switch sectionType {
case .nickTitle, .nickIfno:
let infoCell = tableView.dequeueReusableCell(
withIdentifier: InfoTableViewCell.name,
for: indexPath
) as! InfoTableViewCell

var datasource: InfoCellDatasourceProtocol = InfoCellNormalState(text: itemForIndexPath.text)
if itemForIndexPath.errorStyle {
datasource = InfoCellErrorState(text: itemForIndexPath.text)
}

infoCell.configureCell(datasource: datasource)
}

这就是我在 RxSwift 中所需要的

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let sectionType = SectionType(rawValue: indexPath.section) else { return UITableViewCell() }

var itemForIndexPath: SectionViewModel {
return self.datasource.sectionModels.value[indexPath.section]
}

switch sectionType {
case .nickTitle, .nickInfo:
let infoCell = tableView.dequeueReusableCell(
withIdentifier: InfoTableViewCell.name,
for: indexPath
) as! InfoTableViewCell

var datasource: InfoCellDatasourceProtocol = InfoCellNormalState(text: itemForIndexPath.text)
if itemForIndexPath.errorStyle {
datasource = InfoCellErrorState(text: itemForIndexPath.text)
}

infoCell.configureCell(datasource: datasource)

return infoCell

数据源片段:

open class RegistrationNickDataSource: NickDatasourceProtocol {
public var error: Variable<ErrorType>?
public var success: Variable<Bool> = Variable(false)
fileprivate let request = ValidateNameRequest()


public var nickHints: Variable<[String]>?
public var sectionModels: Variable<[SectionViewModel]> = Variable([
SectionViewModel(
text: "your_nick_hint".localized,
type: .info,
errorStyle: false
),
SectionViewModel(
text: "your_nick_placeholder".localized,
type: .input,
errorStyle: false
),
SectionViewModel(
text: "your_nick_info".localized,
type: .info,
errorStyle: false
)]
)

谢谢你的帮助

最佳答案

这里是一个来自 repo 的例子,用来制作一个分段的表格 View :

https://github.com/ReactiveX/RxSwift/blob/master/RxExample/RxExample/Examples/SimpleTableViewExampleSectioned/SimpleTableViewExampleSectionedViewController.swift

结果是您必须实例化一个 RxTableViewSectionedReloadDataSource

但是,我没有在您的代码中看到您实际拥有部分的位置。 UITableView 中的部分意味着一个二维数组,而你只有一个一维数组......

关于ios - RxSwift 访问 indexPath.section,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44043540/

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