Ios 重写UIViewConrtoller扩展中的preferredStatusBarStyle
我想在Ios 重写UIViewConrtoller扩展中的preferredStatusBarStyle,ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我想在UIViewController的扩展中覆盖preferredStatusBarStyle,如下所示: extension UIViewController { open override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } } 编译器使用Objective-C选择器“preferredStatusBarStyle”为“preferredStatusBar
UIViewController
的扩展中覆盖preferredStatusBarStyle
,如下所示:
extension UIViewController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
编译器使用Objective-C选择器“preferredStatusBarStyle”为“preferredStatusBarStyle”抛出此错误Getter与使用相同Objective-C选择器的方法“preferredStatusBarStyle()”冲突
将相同的覆盖应用于UINavigationController
,而不是UIViewController
;但preferredStatusBarStyle是UIViewController继承的变量
->为什么可以将此扩展应用于UINavigationController
,而不能应用于UIViewController
您不能通过引入属性的类上的Swift扩展以这种方式重写(重新声明实现)已经实现的属性
您应该创建一个UIViewController
子类,并在应用程序范围内使用它
不过,还有一个选择。您可以使用Objective-C通过提供扩展类别来覆盖这一点,类似于应用于UIFont
此处回答的内容:。然而,这样做并不完全安全,你应该期待独角兽在不够小心的情况下出现。谢谢你,米奇。我不喜欢我的自定义基类UIViewController,因此我必须在每个UIViewController类中一次又一次地实现它…不,你不会,您只需从MyBaseViewController
而不是UIViewController
继承所有其他控制器,并在MyBaseViewController
中实现通用功能。这可能是一种推荐的方法。这正是我在说“我不喜欢使用UIViewController的自定义基类”时的想法