迁移自定义推动行到Eureka 4.1



我很难将自定义行从以前的尤里卡(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。

最新更新