我很难将自定义行从以前的尤里卡(Eureka((3.0左右(迁移到尤里卡(Eureka(4.1。自定义行是一个自定义推动行,因此标签可以具有多个行,因此按下的视图控制器可以具有自定义的截面标题。与拥有自定义行相比,可能有一种更好的方法来实现这一目标,因此这是一种可能的解决方案,但是我不确定这是否可能。
因此,有两个问题:自定义行和自定义选择器视图控制器。这是自定义行:
open class _StackedPushRow: SelectorRow<StackedPushCell, CustomSelectorViewController<String>> {
public typealias StackedRow = PushRow<String>
var dontClearWhenDisabled: Bool = false
required public init(tag: String?) {
super.init(tag: tag)
cellProvider = CellProvider(nibName: "StackedPushCell")
presentationMode = .show(controllerProvider: ControllerProvider.callback {
return CustomSelectorViewController<Cell.Value> { _ in } },
onDismiss: { vc in
self.cell.update()
_ = vc.navigationController?.popViewController(animated: true)
})
}
}
/// A generic inline row where the user can pick an option from a presented view controller
public final class StackedPushRow: _StackedPushRow, RowType {
required public init(tag: String?) {
super.init(tag: tag)
}
}
这是自定义选择器视图控制器:
public final class CustomSelectorViewController<T: Equatable>: SelectorViewController<T> {
open override func viewDidLoad() {
super.viewDidLoad()
form.first?.header = HeaderFooterView.caliberStyleSectionHeader(title: row.title ?? "")
}
static func presentationMode<T: Equatable>() -> PresentationMode<SelectorViewController<T>> {
return .show(controllerProvider: ControllerProvider.callback {
return CustomSelectorViewController<T> { _ in }
}, onDismiss: { vc in
_ = vc.navigationController?.popViewController(animated: true)
})
}
}
这是自定义行的错误:
/users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/common/customrows/stackedpushrow.swift.78:29: 通用类型的" selectory"专用于太多类型参数 (获得2,但预期1(
/users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/ui/common/common/customrows/stackedpushrow.swift.85:9:9: "超级"成员不能在根类中引用 /USERS/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/common/customrows/stackedpushrow.swift:86:86:9: 使用未解决的标识符" CellProvider" /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/common/customrows/stackedpushrow.swift:88:88:9: 使用未解决的标识符"呈现模式" /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/common/customrows/stackedpushrow.swift:98:20: 键入" stackedpushrow"不符合协议'baserowtype' /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/common/customrows/stackedpushrow.swift:98:20: 键入" stackedpushrow"不符合协议" rowtype" /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/common/customrows/stackedpushrow.swift:98:20: 候选人具有非匹配类型'(字符串?,(self( -> void(' (eureka.rowtype( /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/common/customrows/stackedpushrow.swift:98:20: 键入" stackedpushrow"不符合协议"标记" /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/common/customrows/stackedpushrow.swift:98:20: 键入" stackedpushrow"不符合协议'typedrowtype' /USERS/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/common/customrows/stackedpushrow.swift:111:11:9: 使用未解决的标识符"验证" /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/common/customrows/stackedpushrow.swift:141:9: " stackedpushrow"不是" baserow"的子类型
这是自定义选择器视图控制器的错误:
/users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/ui/common/customselectorviewcontroller.swift:12:64: 't'不符合协议'options providerrow' /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/customselectorviewcontroller.swift:14:24: 方法不会覆盖其超类的任何方法 /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/customselectorviewcontroller.swift:15:9: "超级"成员不能在根类中引用 /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/customselectorviewcontroller.swift:17:9: 使用未解决的标识符"形式" /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/customselectorviewcontroller.swift:17:80: 使用未解决的标识符"行" /users/rod/documents/development/caliber/caliberios/h2o/_ios/h2o/ui/common/customselectorviewcontroller.swift:22:52: 传递的参数call否则没有参数
我已经阅读了GitHub上的问题部分,并看到了其他人遇到的示例,但是每次我尝试将示例练习练习时,我都会遇到其他问题,而我只是继续围绕圈子。我真的可以使用一些帮助。
谢谢。
SelectorRow
现在仅采用通用单元格类型,但没有视图控制器。SelectorViewController由presentationMode
定义。您应该声明您的行: open class _StackedPushRow: SelectorRow<StackedPushCell>
对于您的CustomSelectorViewController
,您需要通过将要用作通用类型的Rowtype。该行类型必须符合OptionsProviderRow
,例如ListCheckrow。