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

时间:2017-12-26 21:02:10

标签: ios swift eureka-forms swift3.2

如果我使用最新支持swift 4的Eureka pod,我就得到了答案。 https://github.com/xmartlabs/Eureka/issues/1355#issuecomment-353334726

但我在分支swift 3.2

当我使用上面链接中给出的解决方案时

class MyPushViewController: SelectorViewController<SelectorRow<PushSelectorCell<String>>> {

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

我收到错误&#34;通用类型&#39; SelectorRow&#39;专门用于太少的类型参数(得到1,但预期为2)&#34;

2 个答案:

答案 0 :(得分:0)

您遇到的错误与SelectRow泛型类型有关。它需要2个类型参数:

<SelectRow<PushSeletorCell<String>, second type here>

尤里卡的例子:

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>

答案 1 :(得分: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
  }
}