如果我使用支持swift 4. https://github.com/xmartlabs/Eureka/issues/1355#issuecomment-353334726的最新的Eureka吊舱,我得到了答案
但我在分支swift 3.2
当我使用上面链接中给出的解决方案时
class MyPushViewController: SelectorViewController<SelectorRow<PushSelectorCell<String>>> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
我得到错误“通用类型'SelectorRow'专门用太少的类型参数(得到1,但预期2)”
您得到的错误是关于SelectRow泛型类型。它需要2个类型参数:
<SelectRow<PushSeletorCell<String>, second type here>
Eureka的例子:
public final class CustomPushRow<T: Equatable>: SelectorRow<PushSelectorCell<T>, SelectorViewController<T>>, RowType {
public required init(tag: String?) {
super.init(tag: tag)
presentationMode = .show(controllerProvider: ControllerProvider.callback {
return SelectorViewController<T>(){ _ in }
}, onDismiss: { vc in
_ = vc.navigationController?.popViewController(animated: true)
})
}
}
如您所见,SelectRow需要2种类型的参数:PushSelectorCell<T>
和SelectorViewController<T>
我试图让自定义行工作,但经过近2个小时的实验,我什么也没做到。随机模板错误,它提醒我来自cpp的模板地狱。
对于像我这样的疲惫的人,这是一个解决方法:
class CustomNavigationController: UINavigationController {
override var preferredStatusBarStyle: UIStatusBarStyle {
// force status bar style for Eureka forms
if topViewController is FormViewController {
return .lightContent
}
return topViewController?.preferredStatusBarStyle ?? .default
}
}