【问题标题】:How to change Status Bar Style of PushRow View Controller?如何更改 PushRow 视图控制器的状态栏样式?
【发布时间】:2017-12-26 21:02:09
【问题描述】:

如果我使用最新的支持 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
    }
}

我收到错误“通用类型 'SelectorRow' 专用于类型参数太少(得到 1,但预期为 2)”

【问题讨论】:

    标签: ios swift eureka-forms swift3.2


    【解决方案1】:

    你得到的错误是关于 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&lt;T&gt;SelectorViewController&lt;T&gt;

    【讨论】:

    • 我不明白。你能更明确一点吗?比如第二种应该是什么?
    • 我无法在此类 CustomPushRow 中访问 preferredStatusBarStyle
    • prefferedStatusBarStyle 是 UIViewController 属性。您应该继承 SelectorViewController 并访问 preffredStatusBarStyle。因此,第二种类型的参数应该是您的子类名称。您也可以将上面的通用 T 替换为 String
    【解决方案2】:

    我试图让自定义行正常工作,但经过近 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
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 2014-02-08
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      相关资源
      最近更新 更多