如何更改PushRow View Controller的状态栏样式?

问题描述 投票:0回答:2

如果我使用支持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)”

ios swift eureka-forms swift3.2
2个回答
0
投票

您得到的错误是关于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>


0
投票

我试图让自定义行工作,但经过近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
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.