覆盖UIViewConrtoller扩展中的preferredStatusBarStyle

时间:2017-03-03 14:40:15

标签: ios swift uiviewcontroller

我想在preferredStatusBarStyle的扩展名中覆盖UIViewController,如下所示:

extension UIViewController {
    open override var preferredStatusBarStyle: UIStatusBarStyle {
      return .lightContent
    }
}

编译器抛出此错误Getter for 'preferredStatusBarStyle' with Objective-C selector 'preferredStatusBarStyle' conflicts with method 'preferredStatusBarStyle()' with the same Objective-C selector

将同一覆盖应用于UINavigationController代替UIViewController;但preferredStatusBarStyle是一个由UIViewController继承的var。

- >为什么可以将此扩展程序应用于UINavigationController,而不是UIViewController

1 个答案:

答案 0 :(得分:4)

你不能通过引入属性的类中的 Swift 中的扩展以这种方式覆盖(重新声明实现)已经实现的属性。

你绝对应该创建一个UIFont子类,而是在应用程序范围内使用它。

然而,有一个选择。您可以使用 Objective-C 覆盖此项,方法是提供一个扩展类别,类似的内容适用于此处回答的namespace App\Vertica; include 'clsPDOVertica.php'; use Illuminate\Support\Arr; use \Illuminate\Database\Connectors\Connector as BaseConnector; class Connector extends BaseConnector { /** * Create a new PDO connection. * * @param string $dsn * @param array $config * @param array $options * @return \PDO */ public function createConnection($dsn, array $config, array $options) { $username = Arr::get($config, 'username'); $password = Arr::get($config, 'password'); return new PDOVertica($dsn, $username, $password, $options); } } Is there a way to change default font for your application。然而,这样做并不是完全安全的,你应该在不够小心的情况下期待独角兽。